20220315 代码初始化上传
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
// PLUGIN: Subtitle
|
||||
|
||||
(function ( Popcorn ) {
|
||||
|
||||
var i = 0,
|
||||
createDefaultContainer = function( context, id ) {
|
||||
|
||||
var ctxContainer = context.container = document.createElement( "div" ),
|
||||
style = ctxContainer.style,
|
||||
media = context.media;
|
||||
|
||||
var updatePosition = function() {
|
||||
var position = context.position();
|
||||
// the video element must have height and width defined
|
||||
style.fontSize = "18px";
|
||||
style.width = media.offsetWidth + "px";
|
||||
style.top = position.top + media.offsetHeight - ctxContainer.offsetHeight - 40 + "px";
|
||||
style.left = position.left + "px";
|
||||
|
||||
setTimeout( updatePosition, 10 );
|
||||
};
|
||||
|
||||
ctxContainer.id = id || Popcorn.guid();
|
||||
style.position = "absolute";
|
||||
style.color = "white";
|
||||
style.textShadow = "black 2px 2px 6px";
|
||||
style.fontWeight = "bold";
|
||||
style.textAlign = "center";
|
||||
|
||||
updatePosition();
|
||||
|
||||
context.media.parentNode.appendChild( ctxContainer );
|
||||
|
||||
return ctxContainer;
|
||||
};
|
||||
|
||||
/**
|
||||
* Subtitle popcorn plug-in
|
||||
* Displays a subtitle over the video, or in the target div
|
||||
* Options parameter will need a start, and end.
|
||||
* Optional parameters are target and text.
|
||||
* Start is the time that you want this plug-in to execute
|
||||
* End is the time that you want this plug-in to stop executing
|
||||
* Target is the id of the document element that the content is
|
||||
* appended to, this target element must exist on the DOM
|
||||
* Text is the text of the subtitle you want to display.
|
||||
*
|
||||
* @param {Object} options
|
||||
*
|
||||
* Example:
|
||||
var p = Popcorn('#video')
|
||||
.subtitle({
|
||||
start: 5, // seconds, mandatory
|
||||
end: 15, // seconds, mandatory
|
||||
text: 'Hellow world', // optional
|
||||
target: 'subtitlediv', // optional
|
||||
} )
|
||||
*
|
||||
*/
|
||||
|
||||
Popcorn.plugin( "subtitle" , {
|
||||
|
||||
manifest: {
|
||||
about: {
|
||||
name: "Popcorn Subtitle Plugin",
|
||||
version: "0.1",
|
||||
author: "Scott Downe",
|
||||
website: "http://scottdowne.wordpress.com/"
|
||||
},
|
||||
options: {
|
||||
start: {
|
||||
elem: "input",
|
||||
type: "text",
|
||||
label: "Start"
|
||||
},
|
||||
end: {
|
||||
elem: "input",
|
||||
type: "text",
|
||||
label: "End"
|
||||
},
|
||||
target: "subtitle-container",
|
||||
text: {
|
||||
elem: "input",
|
||||
type: "text",
|
||||
label: "Text"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_setup: function( options ) {
|
||||
var newdiv = document.createElement( "div" );
|
||||
|
||||
newdiv.id = "subtitle-" + i++;
|
||||
newdiv.style.display = "none";
|
||||
|
||||
// Creates a div for all subtitles to use
|
||||
( !this.container && ( !options.target || options.target === "subtitle-container" ) ) &&
|
||||
createDefaultContainer( this );
|
||||
|
||||
// if a target is specified, use that
|
||||
if ( options.target && options.target !== "subtitle-container" ) {
|
||||
// In case the target doesn't exist in the DOM
|
||||
options.container = document.getElementById( options.target ) || createDefaultContainer( this, options.target );
|
||||
} else {
|
||||
// use shared default container
|
||||
options.container = this.container;
|
||||
}
|
||||
|
||||
document.getElementById( options.container.id ) && document.getElementById( options.container.id ).appendChild( newdiv );
|
||||
options.innerContainer = newdiv;
|
||||
|
||||
options.showSubtitle = function() {
|
||||
options.innerContainer.innerHTML = options.text || "";
|
||||
};
|
||||
},
|
||||
/**
|
||||
* @member subtitle
|
||||
* The start function will be executed when the currentTime
|
||||
* of the video reaches the start time provided by the
|
||||
* options variable
|
||||
*/
|
||||
start: function( event, options ){
|
||||
options.innerContainer.style.display = "inline";
|
||||
options.showSubtitle( options, options.text );
|
||||
},
|
||||
/**
|
||||
* @member subtitle
|
||||
* The end function will be executed when the currentTime
|
||||
* of the video reaches the end time provided by the
|
||||
* options variable
|
||||
*/
|
||||
end: function( event, options ) {
|
||||
options.innerContainer.style.display = "none";
|
||||
options.innerContainer.innerHTML = "";
|
||||
},
|
||||
|
||||
_teardown: function ( options ) {
|
||||
options.container.removeChild( options.innerContainer );
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})( Popcorn );
|
||||
Reference in New Issue
Block a user