Беда с фреймами - PullRequest
       7

Беда с фреймами

1 голос
/ 11 июля 2011

Я генерирую фреймы динамически для множества разных случайных веб-сайтов, и я склонен получать эту ошибку в консоли javascript (необязательно с этим URL):

Unsafe JavaScript attempt to access frame with URL http://localhost:3000/results/ from frame with URL http://www.apple.com/iphone/. Domains, protocols and ports must match.

Почему я получаю эту ошибку? Есть ли способ избавиться от этого?

Таким образом, только два раза, когда я взаимодействую с iframe в javascript, это когда я динамически загружаю iframe:

$("#results_div").html('<iframe src='+url+' frameborder="0" class="iframe"><p>Browser does not support iframes.</p></iframe>');

и когда я извлекаю атрибут src для iframe:

var previewed = $("iframe").attr("src");

Какой из них вызывает ошибку?

Ответы [ 3 ]

4 голосов
/ 11 июля 2011

Скрипт в вашем iframe пытается получить доступ к родительскому скрипту / dom, и они находятся в разных доменах.Междоменный сценарий генерирует эту ошибку в общем случае.

В вашем случае apple.com и localhost - это разные домены, и что-то в этих iframe пытается получить доступ к сценарию родительского окна или элементу dom.* Несколько способов решить эту проблему:

0 голосов
/ 11 июля 2011

Вы не можете взаимодействовать с другим доменом с помощью javascript или iframes, кроме загрузки домена с помощью iframe.

0 голосов
/ 11 июля 2011

Это связано с тем, что ваш скрипт пытается получить доступ к некоторому коду в другом домене. Это поведение можно понять, прочитав «Политика одного источника». http://en.wikipedia.org/wiki/Same_origin_policy

Существуют обходные пути и некоторые реализации, с помощью которых вы можете решить эту проблему.

Некоторые из них используют прокси-подход, подход с использованием идентификатора фрагмента.

В HTML5 мы можем использовать postmessages, чтобы решить эту проблему.

Но вы должны выяснить, что может сработать для вас.

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