4

我目前正在使用 Video JS 来提供视频文件,并且视频源会根据访问者单击的项目而变化。当我的页面加载时,我运行以下代码将 videoplayer 对象绑定到一个变量。

var videoPlayer = _V_("my_video_1");

这在除 IE7 和 IE8 之外的所有浏览器中都能完美运行。我一直在调试我的代码,它似乎被卡在了从不触发的 ready 事件上。虽然它不会在控制台中留下任何错误。但是 ready 函数中的任何警报或操作都会被忽略,而实际上正是在那个时候源被修改了。这是我用来更改源的代码:

videoPlayer.ready(function(){
    var myPlayer = this;
    myPlayer.src([
        { type: "video/mp4", src: videoFile + ".mp4" },
        { type: "video/ogg", src: videoFile + ".ogv" }
    ]);
    myPlayer.play();
    myPlayer.volume(0.2);
    $('div#videoViewer').show();
});

我一直在其他两个页面上使用相同的代码,并且没有任何问题让它工作。现在我和一位同事已经调试了好几个小时,但离解决方案还差得远。

这里有没有人有任何想法可能导致准备好的事件被忽略?我一直在尝试禁用所有其他脚本以找到问题的根源,但它一直没有工作。

我非常感谢任何可以帮助我解决此问题的答案。

4

2 回答 2

4

我有同样的问题。在我的例子中,ready 事件不会在 IE8 中触发,因为我有一个设置为display:none. 如果包装器可见,就绪事件将按预期触发。这个问题在 IE9 中没有出现。

于 2012-11-20T21:48:38.710 回答
0

我有同样的问题,我的解决方案是直接将 DOM 元素而不是 id 传递给 videojs 函数。

//having this
<video id="VIDEO" ....>

//this fails
videojs('VIDEO').ready(...)

// this works!!
videojs(document.getElementById('VIDEO')).ready(...)

希望它有所帮助:D

于 2017-01-04T12:49:49.160 回答