IE11 JavaScript(错误:SCRIPT445)“对象不支持此操作”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IE11 JavaScript(错误:SCRIPT445)“对象不支持此操作”相关的知识,希望对你有一定的参考价值。

我使用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);
});
答案

在评估整个脚本之前,IE中存在竞争条件,即触发脚本加载器回调。通过使用setTimeout(initYT,0),您将允许脚本在触发初始化函数之前完成评估。很高兴它有效!

另一答案

对象不支持此操作是IE11中使用window.dispatchEvent(新事件('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'));
        }

以上是关于IE11 JavaScript(错误:SCRIPT445)“对象不支持此操作”的主要内容,如果未能解决你的问题,请参考以下文章

javascript Ajax SCRIPT1003:IE 11 中的预期为“:”

IE9 JavaScript 错误:SCRIPT5007:无法获取属性“ui”的值:对象为空或未定义

IE 11 Script1002 Array.Filter(x => ...)(箭头函数)

从 IFRAME IE11 调用父 JavaScript

IE10/11 Ajax XHR 错误 - SCRIPT7002:XMLHttpRequest:网络错误 0x2ef3

IE11 SCRIPT7002: XMLHttpRequest: 网络错误 0x2ee4