从iframe访问父窗口的元素

时间:2011-08-11 14:37:13

标签: javascript jquery ajax iframe

我有一个页面,我们可以调用parent.php。在这个页面中,我有一个带有提交表单的iframe,除此之外,我有一个id为“target”的div。是否可以在iframe中提交表单,并在成功时刷新目标div。比如在其中加载一个新页面?

编辑: 目标div位于父页面中,所以我的问题基本上是你可以在iframe之外的一个例子中为父节点做一个jQuery调用。那看起来怎么样?

编辑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>

4 个答案:

答案 0 :(得分:110)

我认为问题可能是你没有找到你的元素,因为你的电话中有“#”来获取它:

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

如果您使用的是jquery,则只需要#。这应该是:

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

答案 1 :(得分:10)

在iframe中使用以下js并使用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");
          });
       });

   });

});

答案 2 :(得分:10)

您可以使用window.parent这样在iframe中访问父窗口的元素:

// 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");

答案 3 :(得分:5)

我认为您可以使用iframe中的window.parent。 window.parent返回父页面的window对象,因此您可以执行以下操作:

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

然后用那个div做你想做的事。