Неперехваченная ошибка типа: не удается прочитать свойство ‘contentWindow’ неопределенного

#javascript #jquery

#javascript #jquery

Вопрос:

Я получаю эту ошибку при попытке запустить эту функцию. Если вы хотите протестировать его, вы можете посетить этот сайт здесь: http://www.apdty.com/pluton

Нажмите «Видео» вверху и наведите курсор мыши на один из эскизов. Затем щелкните знак плюс. Ошибка должна появиться в консоли разработчика вашего браузера. Предполагается, что код останавливает видео при его воспроизведении. Вы можете увидеть пример здесь: http://jsfiddle.net/ow3s692n /

 function toggleVideo() {
                    var frames = document.getElementsByTagName("iframe").length;
                    var div = document.getElementById("popupVid");
                    for (var i = 0; i < frames; i  ) {
                        var iframe = div.getElementsByTagName("iframe")[i].contentWindow;
                        iframe.postMessage('{"event":"command","func":"stopVideo","args":""}','*');
                        document.getElementById("mytext").value = i;
                    }
                }
 

Обновление: @Pointy был корректным, используя document вместо div. Я также допустил ошибку, указав из местоположения http в местоположение https. Вам также необходимо удалить «?rel = 0» из ваших ссылок на YouTube

Комментарии:

1. Вы получаете количество фреймов во всем документе, но затем вы выполняете итерацию только по фреймам внутри него <div> . Их явно меньше. Вы имели в виду использовать document.getElementsByTagName() внутри цикла?

2. @Pointy Ах, вы правы. изменение его с div на document исправляет ошибку, но теперь это фактически не останавливает видео…

3. Вот обновленный jsfiddle.net/3cxt07e0 что работает. Я также загрузил новый файл сайта. По-прежнему не работает.

4. Теперь все исправлено. Обновленный OP. Спасибо, что указали мне правильное направление @Pointy