API iFrame YouTube перестает работать при использовании material.min. js для Material Design Lite - PullRequest
0 голосов
/ 08 января 2020

Я создаю небольшое веб-приложение, использующее nodejs для воспроизведения пользовательских списков видео YouTube. Проблема в том, что в Google Chrome YT-api перестает вызывать события после вызова только одного события onPlayerReady. Firefox, кажется, показывает то же самое поведение, но оно будет работать случайно при обновлении страницы. Я провожу несколько часов, делая метод проб и ошибок, чтобы определить причину проблемы. Короче говоря, я наконец-то обнаружил, что виновником ошибки является загрузка material.min.js.

Следующий фрагмент кода html - это то, что, по-видимому, работает большую часть времени только в Firefox. РЕДАКТИРОВАТЬ: это мой индекс. html

Примечание: я получил его на работа в Google Chrome тоже, но мне пришлось поставить точку останова внутри onPlayerReady в самом начало. Очевидно, что задержки было достаточно, чтобы не допустить убийства API YT-iFrame в сценарии MDL.

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <!-- meta stuff here -->

    <title>Youtube LinkNav</title>

    <!-- Style imports for Material Design Lite -->
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en">
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>
    <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.blue_grey-blue.min.css"/>

    <!-- Local stylesheet -->
    <link rel="stylesheet" href="stylesheets/styles.css">

    <!-- jQuery -->
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
</head>

<body  class="mdl-demo mdl-color--blue-grey-900 mdl-color-text--grey-700 mdl-base">
    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
        <!-- rest of html structure here... -->
    </div>

    <!-- Sourcecode for Material Design Lite -->
    <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
    <!-- This code loads the iFrame Player API code asynchronously.-->
    <script src = "https://www.youtube.com/iframe_api"></script>
    <!-- youtube api local handler -->
    <script src="jsscripts/yt-api-script.js"></script>
</body>
</html>

Я также попытался поместить все сценарии в заголовок. Просто iFrame API с моим исходным кодом в заголовке с MDL на теле. Все в шапке. Также я пробовал предыдущие в разных порядках, а также добавлял и удалял defer тут и там. Ничего. На данный момент я просто делаю слепые снимки в надежде, что что-то это исправит.


Редактировать 2: Я не уверен, что это полезно, но я использую этот шаблон из MDL и примера проигрывателя YouTube на github. Также проблема сохраняется независимо от того, запущена ли веб-страница на сервере в nodejs или в виде локального файла непосредственно из браузера.

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