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

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


尽管我成功地使用了它(下),但我并没有完全理解它。似乎是在引导全局videojs对象查找带有可选参数({})的id“ videoPlayer”实例,然后在该实例上调用匿名函数。

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

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



上下文:我正在使用Electron构建一个桌面应用程序来承载Timeline.js,在其中我可以访问和显示本地.mp4文件。 Timeline.jsiFrame用作“包括任何所需内容”选项,因此我有一个“ video.html”文件作为iFrame的源。在时间轴的JSON中,我使用查询字符串将参数传递给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>",
         },

最佳答案

这完全取决于videojs的实现。

second {} parameter是一个“空对象”,但可以根据需要传入其他参数。

third parameter(具有匿名功能的位置)是在videojs加载和初始化后运行的功能。

所有这些都在video js文档中进行了说明,但是由于您是javascript新手,所以我很原谅,因为“空对象{}”对于您来说可能是新概念,因为javascript文件需要花费一些时间才能异步加载,然后它们的代码当然要花一些时间进行初始化,因此在良好的第三方库中,通常会通过传入函数来实现“在初始化时运行此代码”的行为。

因此,是的,这是用于初始化第三方javascript库的相当普遍的实现“模式”,但我不认为它具有特定的名称。

关于javascript - 了解此模式:videojs(“videoPlayer”,{},function(){},我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41965209/

10-10 23:40