Узел DOM плеера Youtube, кажется, отличается в сценарии содержания и устаревании - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь написать скрипт контента, который выполняется на странице YouTube, ждет готовности видеопроигрывателя и меняет качество воспроизведения на заданное значение по умолчанию.

Чтобы узнать, когдапроигрыватель готов. Я выполняю эту функцию каждые 25 мсек:

 function changePlayerQuality(){
    var playerReadyInterval=window.setInterval(function(){
        var player=document.getElementById("movie_player");
        if(checkPlayerReady(player)){
            console.log("player ready");
            window.clearInterval(playerReadyInterval);
            player.setPlaybackQualityRange(defaultQuality,defaultQuality);
        }
    },25);
}

checkPlayerReady написано следующим образом и использует функцию getPlayerState API Youtube:

function checkPlayerReady(player) {
    console.log(player);
    if(typeof player.getPlayerState === "function") console.log("exists")
    else console.log("does not exist");
    try{
        if (player.getPlayerState() !=-1) return true;
        else return false;
    }
    catch(e){
        return false;
    }
}

Прямо сейчасК сожалению, этот интервал постоянно зацикливается, поскольку функция getPlayerState не существует (консоль регистрирует «не существует» несколько раз).

Мне кажется странным, что player node changePlayerQuality Журналы на его 4-й строке имеют функцию getPlayerState.Если я щелкну на нем правой кнопкой мыши, использую «stock в качестве глобальной переменной», я действительно могу вызвать функцию getPlayerState.Точно так же, как если бы у узла было другое (более старое?) Состояние в моем скрипте контента и в других местах.

Ожидаемый результат будет для checkPlayerReady, чтобы возвратить true в одной точке и для changePlayerQuality, чтобы изменить YouTubeКачество воспроизведения видео.

Это моя первая попытка сделать расширение Firefox, поэтому я могу упустить что-то действительно простое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...