JavaScript / jQuery: как получить доступ к контенту в iFrame?

Вопрос

Я хочу произвести некие действия с html, который находится внутри iFrame. Я пытался сделать это следующим образом:

$(function(){//document ready
$(''some selector'', frames[''nameOfMyIframe''].document).doStuff()
});

Но это не работает. Сначала мне выдавалось сообщение, что frames[»nameOfMyIframe»] является ‘undefined’. Я так понял, это потому, что надо дождаться загрузки iframe. Однако, после того, как iFrame загружается, я всё равно не могу получить доступ к его переменным (мне выдаётся ошибка, что у меня нет прав доступа, а именно: ‘Permission denied to access property ownerDocument’ или ‘Unsafe JavaScript attempt to access frame with URL’ в зависимости от браузера).

Кто-нибудь знает, как можно получить доступ к контенту в iFrame?

Ответ №1

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

Если адрес документа из iFrame находится на том же домене, что и адрес документа, из которого получают доступ, тогда сделать это можно таким-вот образом:

$("#myiframe").contents().find("#somediv").removeClass("hidden");

Следующий пример найдёт все заголовки h2 на странице в iFrame и перечеркнёт их. Ошибки не будет, потому что страница находится на этом же домене. Если бы документ был из другого домена, мы бы получили ошибку доступа.

$("#myiframe").contents().find("h2").css(''text-decoration'',''line-through'');
Пример

No responses yet

Добавить комментарий