Доступ к элементам родительского окна из iframe
У меня есть страница, которую мы можем назвать parent.php
. На этой странице у меня есть iframe
с формой для отправки, и кроме этого у меня есть div с идентификатором "target". Можно ли отправить форму в iframe и при успешном обновлении целевой div. Скажем, загрузить новую страницу или что-то?
Изменение: целевой div находится на родительской странице, поэтому мой вопрос в основном, если вы можете сделать для примера вызов jQuery за пределами iframe для родителя. И как это будет выглядеть?
Редактировать 2: Так вот как теперь выглядит мой код jquery. Это на странице iframe. div #target находится в parent.php
$(;"form[name=my_form]").submit(function(e){
e.preventDefault;
window.parent.document.getElementById('#target');
$("#target").load("mypage.php", function() {
$('form[name=my_form]').submit();
});
})
Я не знаю, активен ли скрипт, потому что форма успешно отправляется, но ничего не происходит с целью.
Изменить 3:
Сейчас я пытаюсь вызвать родительскую страницу по ссылке внутри iframe. И успеха там тоже нет
<a href="javascript:window.parent.getElementById('#target').load('mypage.php');">Link</a>
Ответы
Ответ 1
Я думаю, проблема может заключаться в том, что вы не находите свой элемент из-за "#" в своем вызове, чтобы получить его:
window.parent.document.getElementById('#target');
Вам нужно только #, если вы используете jquery. Здесь это должно быть:
window.parent.document.getElementById('target');
Ответ 2
Введите ниже js внутри iframe и используйте ajax для отправки формы.
$(function(){
$("form").submit(e){
e.preventDefault();
//Use ajax to submit the form
$.ajax({
url: this.action,
data: $(this).serialize(),
success: function(){
window.parent.$("#target").load("urlOfThePageToLoad");
});
});
});
});
Ответ 3
Вы можете получить доступ к элементам родительского окна из iframe, используя window.parent
следующим образом:
// using jquery
window.parent.$("#element_id");
Который так же, как:
// pure javascript
window.parent.document.getElementById("element_id");
И если у вас есть несколько вложенных iframe и вы хотите получить доступ к верхнему iframe, то вы можете использовать window.top
следующим образом:
// using jquery
window.top.$("#element_id");
Который так же, как:
// pure javascript
window.top.document.getElementById("element_id");
Ответ 4
Я думаю, вы можете просто использовать window.parent из iframe. window.parent возвращает объект окна родительской страницы, поэтому вы можете сделать что-то вроде:
window.parent.document.getElementById('yourdiv');
Затем сделайте все, что хотите, с этим div.