Встраивание видео Youtube с помощью iframe дает " небезопасную попытку JavaScript … "

Я пытаюсь встроить видео YouTube с помощью этого кода:

<iframe width="425" height="319" frameborder="0" wmode="Opaque"allowfullscreen=""
      src="http://www.youtube.com/embed/8vJwFvFi4ZY?wmode=transparent">
</iframe>

и хотя он работает нормально, но он дает эту ошибку в консоли:

Chrome версия 22.0.1229.94:

небезопасная попытка JavaScript получить доступ к кадру с URL http://example.com/
из кадра с URL http://www.youtube.com/embed/8vJwFvFi4ZY?wmode=transparent.
Домены, протоколы и порты должен соответствовать.

Firefox версии 17.0:

ошибка: отказано в доступе к свойству "toString"

Я искал вокруг, но я обнаружил, что это, вероятно, проблема с YouTube, и они должны решить,

вопрос: как я могу избавиться от этой ошибки? (любыми средствами, даже подавляя его.)

5 ответов


вы не можете остановить его, по крайней мере, не так, как я знаю (а я много перепробовала). В назначении iframe есть скрипт, который пытается получить доступ к вашему документу, вероятно, ищет глобальные функции, которые он может вызвать для включения API.

другое дело, что ошибка сохраняется даже при использовании их собственного iframe API: http://jsbin.com/izabed/1/edit

в этом нет никакого вреда, ваше видео будет работать нормально. Но это выглядит смелым, если вы запустите его в консоли. Вероятно, они должны включить это в качестве параметра, и сначала я подумал, что это идея origin параметр, но это не имеет никакого значения.

также стоит отметить, что их собственные демо отображает ту же ошибку (и другие). Кроме того, если вы используете embed тег вместо iframe, он не будет отображать какие-либо ошибки.

таким образом, вы можете сделать что-то подобное, чтобы предотвратить ошибку в большинстве настольных браузеров:

if(haveflash) {
    // use <embed>
} else {
    // use iframe
}

перемещение обсуждения из комментариев в этот ответ. Короче говоря, проблема в том, что междоменный доступ к объекту JS не разрешен, что в вашем случае сценарий youtube.com пытается сделать с родительской страницей.

Если вы хотите показать только видео youtube, вы можете использовать тег.


просто добавить ?html5=1 чтобы предотвратить эту ошибку. (Swich игроку HTML5)


что это за браузер ? Когда я пытаюсь добавить iframe с помощью JavaScript в Firefox на этой странице, ошибка / предупреждение не появляется.


зачем использовать Javascript, когда вы можете использовать только CSS? Он работает каждый.одиночный.время. Вы даже можете включить любое видео в отзывчивый слайдер.

или просто посетите: http://embedresponsively.com/

<style>
.embed-container 
{ 
position: relative; 
padding-bottom: 56.25%; 
height: 0; 
overflow: hidden; 
max-width: 100%; 
} 

.embed-container iframe, .embed-container object, .embed-container embed 
{ 
position: absolute; 
top: 0; 
left: 0; 
width: 100%; 
height: 100%; 
}
</style>

<div class='embed-container'>

<iframe src='https://www.youtube.com/watch?v=tntOCGkgt98' frameborder='0' allowfullscreen>
</iframe>
</div>