理解这种模式:videojs(“videoPlayer”,{},function(){}

时间:2017-01-31 18:45:48

标签: javascript video.js

我是最近来自Flex / Actionscript行星的难民,我仍然在弄清楚基础知识,所以这可能是一个非常简单的问题。我对以下几行感到困惑:

videojs("videoPlayer", {}, function(){}

虽然我成功使用它(下面)但我并不完全理解它。它似乎指示一个全局videojs对象来查找id“videoPlayer”的实例,带有可选的参数({}),然后在实例上调用匿名函数。

我有这个权利吗?引起我困惑的是可选参数({})。我可以使用它传递srcposter并跳过该功能吗?这种模式是否有名称并且它是否常见?

如果这是重复的话,请随意对我大喊......

上下文:我正在使用Electron构建一个桌面应用来托管Timeline.js,我在其中访问并显示本地.mp4文件。 Timeline.js使用iFrame作为“包含您想要的任何内容”选项,因此我有一个“video.html”文件作为iFrame的来源。在时间轴的JSON中,我使用查询字符串将params传递给Video.js

的iFrame
<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>", 
         },

2 个答案:

答案 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库,但我不相信它有一个特定的名称。