Доступ и изменение родительской страницы из iframe (с jquery)
есть ли какой-либо способ доступа с iframe на страницу parrent (и изменение паритной страницы)?
<body>
<iframe src="frame1.html" name="frame1" height="100%"></iframe>
<div id="test1"></div>
</body>
В frame1.html есть <a href=..>
, и я хочу добавить текст "<h1>clicked</h1>
" в <div id="test1"></div>
, когда был нажат <a href..>
.
Спасибо.
Ответы
Ответ 1
Если ваша дочерняя страница (frame1.html) находится в том же домене, что и родительская страница, вы можете написать код, как показано ниже в дочернем окне:
$('#test1', parent.document).html('<h1>clicked</h1>');
Второй параметр предоставляет context
для поиска элемента, соответствующего первому параметру. Документ находится здесь: http://api.jquery.com/jQuery/#jQuery-selector-context
jQuery( selector [, context ] )
Итак, ваш код (frame1.html) может выглядеть следующим образом:
<a href="..."
onclick="$('#test1', parent.document).html('<h1>clicked</h1>');">click me</a>
Надеюсь, что это поможет.
Ответ 2
Важное примечание: Доступ к играм iframe возможен только в том случае, если оба родителя и iframe относятся к одному домену, иначе у вас нет доступа из-за политики одинакового происхождения.
Обратите внимание, что обе части имеют свой собственный документ. Доступ к родительскому объекту из iframe прост с помощью
parent.document
и от родителя это одно из следующего:
window.frames['iframeName']
(window.frames.length /*gives you the number of iframes in your document*/ )
или ссылайтесь на него с идентификатором и выполните следующие действия (следите за поддержкой!)
var iframe = document.getElementById('iframe');
var doc = iframe.contentDocument? iframe.contentDocument:iframe.contentWindow.document;
Ответ 3
Код ниже должен работать нормально:
$(parent.document).find("#selector");
Селектор из родительского документа выполняет некоторые действия. Например:
$(parent.document).find("#selector").remove();