JavaScript: проверить, если URL-адрес iframe является тем же доменом или что-то внешнее - PullRequest
8 голосов
/ 14 сентября 2011

Я знаю, что не могу получить доступ к данным в iframe, который отображает страницу из другого домена.Это прекрасно, но я бы хотел выяснить, показывает ли iframe страницу моего домена или что-то внешнее.

Моя первая попытка - получить доступ к

$('iframe')[0].contentWindow.document

завернутый в try {} catch {}, и если выдается ошибка, это означает, что я не могу получить к ней доступ, и поэтому страница iframe должна быть внешней.Это звучит как идеальное решение, но дело в том, что сафари отправляет сообщение «Небезопасная попытка JavaScript получить доступ к фрейму с URL» в консоль javascript.Это не просто уродливо, но может заставить другие или будущие браузеры отображать явные предупреждения безопасности для пользователя?

Ответы [ 3 ]

1 голос
/ 06 апреля 2013

Можете ли вы попробовать postMessage ?

Если ответа нет, это внешний домен.

0 голосов
/ 14 сентября 2011

Почему бы не проверить, совпадает ли атрибут href из iframe с вашим доменом?

parent.frames[1].location.href;
0 голосов
/ 14 сентября 2011

Если это ваш HTML:

<iframe src="http://www.google.com" width="100%" height="300" id='iframe'>
  <p>Your browser does not support iframes.</p>
</iframe>

не было бы так просто:

var iframeEl = document.getElementById('iframe')
var src = iframeEl.src;

, а затем использовать его для сравнения с вашим доменом?

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