IE11 JavaScript (Error: SCRIPT445) "Object doesn't support this action"
IE11 JavaScript (Error: SCRIPT445) "Object doesn't support this action"
我使用 Javascript 异步加载 YouTube 播放器 API 的解决方案。
整个脚本应该在滚动到其位置时播放视频。
它适用于所有浏览器以及 IE(11),但 有时 在 IE 中我在开发人员工具中收到错误消息:SCRIPT445(对象不支持此操作) 。
Youtube 播放器仍然有效,但它似乎使其他脚本崩溃。我在网上四处查看,也在 Whosebug 上查看。似乎还有其他人有类似的问题,但他们太具体了。也许有人可以帮我解决这个问题。这是造成问题的代码部分:
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);
});
IE 中存在竞争条件,即在评估整个脚本之前触发脚本加载程序回调。通过使用 setTimeout(initYT, 0)
,您将允许脚本在触发初始化函数之前完成评估。很高兴它成功了!
对象不支持此操作是在 IE11 中使用 window.dispatchEvent(new Event('resize')) 出现错误;我们需要处理 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'));
}
我使用 Javascript 异步加载 YouTube 播放器 API 的解决方案。 整个脚本应该在滚动到其位置时播放视频。 它适用于所有浏览器以及 IE(11),但 有时 在 IE 中我在开发人员工具中收到错误消息:SCRIPT445(对象不支持此操作) 。
Youtube 播放器仍然有效,但它似乎使其他脚本崩溃。我在网上四处查看,也在 Whosebug 上查看。似乎还有其他人有类似的问题,但他们太具体了。也许有人可以帮我解决这个问题。这是造成问题的代码部分:
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);
});
IE 中存在竞争条件,即在评估整个脚本之前触发脚本加载程序回调。通过使用 setTimeout(initYT, 0)
,您将允许脚本在触发初始化函数之前完成评估。很高兴它成功了!
对象不支持此操作是在 IE11 中使用 window.dispatchEvent(new Event('resize')) 出现错误;我们需要处理 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'));
}