Подтвердить что ты не робот

Вложение 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:

Ошибка: Permission denied для доступа к свойству 'toString'

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

ИЛИ просто посетите: 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>