我是最近来自Flex / Actionscript行星的难民,我仍然在弄清楚基础知识,所以这可能是一个非常简单的问题。我对以下几行感到困惑:
videojs("videoPlayer", {}, function(){}
虽然我成功使用它(下面)但我并不完全理解它。它似乎指示一个全局videojs
对象来查找id“videoPlayer”的实例,带有可选的参数({}),然后在实例上调用匿名函数。
我有这个权利吗?引起我困惑的是可选参数({})。我可以使用它传递src
和poster
并跳过该功能吗?这种模式是否有名称并且它是否常见?
如果这是重复的话,请随意对我大喊......
上下文:我正在使用Electron
构建一个桌面应用来托管Timeline.js
,我在其中访问并显示本地.mp4文件。 Timeline.js
使用iFrame
作为“包含您想要的任何内容”选项,因此我有一个“video.html”文件作为iFrame的来源。在时间轴的JSON中,我使用查询字符串将params传递给Video.js
<script>
function getParamValue(paramName) {
var url = window.location.search.substring(1);
var qArray = url.split('&');
for (var i = 0; i < qArray.length; i++) {
var pArr = qArray[i].split('=');
if (pArr[0] == paramName)
return pArr[1];
}
}
// grap the video & poster frame refs from url
var videoSrc = getParamValue('videoSrc');
videoSrc = "assets/videos/" + videoSrc;
var poster = getParamValue('poster');
poster = "assets/images/" + poster;
videojs("videoPlayer", {}, function(){
this.src(videoSrc);
this.poster(poster);
this.load();
});
</script>
来自我的Timeline.js JSON的片段
"media": {
"caption": "caption",
"credit": "",
"url": "<iframe allowfullscreen
webkitallowfullscreen
src='video.html?videoSrc=Z.mp4&poster=W.jpg'
width='320' height='240'></iframe>",
},
答案 0 :(得分:1)
是的,您可以使用第二个参数来替换&#34;就绪功能&#34;第三个参数,例如:
videojs("videoPlayer", { src: videoSrc, poster: videoPoster, preload: true } });
玩家准备好了!
只是一个简单的提示:
您可以使用以下方法编写视频源:
src: "http://www.example.com/path/to/video.mp4"
或
src: { type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" }
或
src: [
{ type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" },
{ type: "video/webm", src: "http://www.example.com/path/to/video.webm" },
{ type: "video/ogg", src: "http://www.example.com/path/to/video.ogv" }
]
第二个让videojs引擎检查是否支持播放该文件。
如果播放器的浏览器不支持该文件,则最后一个播放器有机会播放替代文件类型。
祝你好运,玩得开心: - )
答案 1 :(得分:0)
完全取决于videojs的实现。
second {} parameter是一个空对象&#39;,但如果您愿意,可以传入额外的参数。
third parameter(你有匿名函数)是一个在videojs加载和初始化后运行的函数。
这在视频js文档中都有解释,但由于你是一个javascript新手我是宽容的,因为它们都是一个空对象{}&#39;对你来说可能是新概念,因为javascript文件可能需要时间异步加载,然后当然他们的代码需要时间来初始化,所以在良好的第三方库中实现&#39;运行这个很常见初始化时的代码&#39;行为,通过传递一个功能。
所以,是的,这是一个相当普遍的实施模式&#39;初始化第三方JavaScript库,但我不相信它有一个特定的名称。