IE11 JavaScript (ошибка: SCRIPT445) " объект не поддерживает это действие"

Я использую решение Javascript, которое загружает API YouTube player асинхронно. Весь сценарий должен воспроизводить видео при прокрутке до его позиции. Он работает во всех браузерах, а также в 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);
});

2 ответов


в IE есть условие гонки, которое запускает обратный вызов загрузчика скриптов до оценки всего скрипта. Используя setTimeout (initYT, 0), вы позволите скрипту завершить оценку перед запуском функции инициализации. Рад, что сработало!


объект не поддерживает это действие, ошибка приходит в IE11 с помощью окна.dispatchEvent (новое событие ('resize')); нам нужно D обрабатывать условие для 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'));
        }