videojs公共方法访问ready函数和IE外部



我在videoJS上构建了一个播放器,在访问videoJS.ready()中的公共函数时遇到了问题。问题是,除了IE(适用于chrome、safari、ff等)之外,我的代码似乎在任何地方都可以工作:

var myPlayer = _V_('myvideojsId');
myPlayer.ready(function() {
var player = this;
player.myPublicFunction = function() {
alert("hey!");
}
});
myPlayer.myPublicFunction();

在IE中,我得到

Object does not support this property or method

在CCD_ 2线上。是其他浏览器让我逃脱了坏代码的惩罚,还是这是IE的错?

任何帮助都将是伟大的,谢谢!

Chris

参考他们的文档,它准确地显示了Jonathan所说的话:https://github.com/zencoder/video-js/blob/master/docs/api.md#wait-直到玩家准备好

顺便说一句,他对IE的看法是对的。尽管我们都爱恨它,但它多次给我带来了真正的问题。

为了更快地参考,这里有一个替代方法来完成这项工作:

_V_("example_video_1").ready(function(){
var myPlayer = this;
// EXAMPLE: Start playing the video.
myPlayer.play();
});

这可能是定时问题:

myPlayer.ready(function() {});
myPlayer.myPublicFunction();

这里的第一行将一个函数交给myPlayer,以便在玩家准备就绪时调用。在大多数情况下,这种情况不会立即发生,因此很可能会出现延迟。这意味着您的公共函数不会立即添加到myPlayer对象中,而是在视频播放器就绪时完成此任务。

所有这些都意味着,当JavaScript移到第二行时,浏览器的适当响应是该方法不存在——因为它不存在。在视频播放器准备就绪之前,它不会存在,直到稍后。

你可以使用更多的特征检测方法,并且只在存在的情况下调用该方法:

if (myPlayer.myPublicFunction) {
myPlayer.myPublicFunction();
}

你也可以先添加一个方法:

myPlayer.myPublicFunction = function () { alert("Foo"); };
myPlayer.ready(callback);
myPlayer.myPublicFunction(); // 'Foo'

最后,我发现InternetExplorer并不像其他浏览器那样宽容(这很好)。如果它今天出现问题,很可能是因为代码中有问题。

最新更新