cyc*_*lux 9 javascript youtube internet-explorer-11
我使用Javascript解决方案异步加载youtube播放器API.当滚动到其位置时,整个脚本应该播放视频.它适用于所有浏览器以及IE(11),但有时在IE中我在开发人员工具中遇到错误:SCRIPT445(对象不支持此操作).
Youtube播放器仍可正常工作,但它似乎会崩溃其他脚本.我环顾网络,也在Stackoverflow上.似乎有其他人有类似的问题,但他们太具体了.也许有人可以帮我这个.以下是产生问题的代码部分:
var yt_int, yt_players={},
initYT = function() {
$(".ytplayer").each(function() {
yt_players[this.id] = new YT.Player(this.id); <-- Error line
});
};
$.getScript("//www.youtube.com/player_api", function() {
yt_int = setInterval(function(){
if(typeof YT === "object"){
initYT();
clearInterval(yt_int);
}
},500);
});
Run Code Online (Sandbox Code Playgroud)
小智 7
对象不支持此操作是使用 window.dispatchEvent(new Event('resize')); 在 IE11 中出现错误。我们需要处理ie11的条件。
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(evt);
} else {
window.dispatchEvent(new Event('resize'));
}
Run Code Online (Sandbox Code Playgroud)
IE中有一个竞争条件,它会在评估整个脚本之前触发您的脚本加载器回调。通过使用setTimeout(initYT,0),您将允许脚本在启动初始化函数之前完成评估。很高兴它起作用了!
| 归档时间: |
|
| 查看次数: |
17236 次 |
| 最近记录: |