Доступ к элементам родительского окна из iframe


у меня есть страница, которую мы можем назвать родительской.РНР. На этой странице у меня есть iframe с формой отправки, а за ее пределами у меня есть div с идентификатором "target". Можно ли отправить форму в iframe и при успешном обновлении целевого div. Скажем, загрузить в него новую страницу или что-то еще?

изменить: Целевой div находится на родительской странице, поэтому мой вопрос в основном заключается в том, Можете ли вы сделать для примера вызов jquery вне iframe для родителя. И как это будет выглядеть?

изменить Два: Так вот как теперь выглядит мой код jquery. Он находится на странице iframe. цель div #находится в родителе.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>
4 58

4 ответа:

Я думаю, что проблема может быть в том, что вы не находите свой элемент из-за "#" в вашем вызове, чтобы получить его:

window.parent.document.getElementById('#target'); 

вам нужно только # , если вы используете jquery. Вот она должна быть:

window.parent.document.getElementById('target'); 

имейте ниже 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");
          });
       });

   });

});

вы можете получить доступ к элементам родительского окна из 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");

Я думаю, что вы можете просто использовать окно.родительский элемент iframe. окно.parent возвращает объект window родительской страницы, поэтому вы можете сделать что-то вроде:

window.parent.document.getElementById('yourdiv');

тогда делайте все, что вы хотите с этим div.