2013-02-02 74 views
0

我想在父框架中更改iframe中窗体的提交功能。下面的代码应该这样做,但没有任何事情发生。在Chrome的调试器中没有显示错误。哪里不对?管理iframe的表单从父框架提交?

<iframe src="test.php" id="frame"></iframe> 

<script type="text/javascript"> 
$("#frame").contents().find("form").submit(function(){ 
    return true; 
}); 
</script> 

回答

6

确保您处理这个iframe的DOM一旦其内容已被包装一.load回调里面你的电话装:

<iframe src="test.php" id="frame"></iframe> 

<script type="text/javascript"> 
    $('#frame').load(function() { 
     $(this).contents().find('form').submit(function() { 
      return false; 
     }); 
    }); 
</script> 
+0

在这一个任何跨浏览器成功提交的iFrame?看起来好得难以置信。总是对我来说似乎是一个安全问题。你真的认为你可以通过父页面的JS来操作iframe的DOM吗?要么这有限制,要么我的大脑爆炸...... – 3Dom

+2

@ 3Dom,这只会在iframe src属性指向与父域相同的域时起作用。例如,如果您有一个指向google.com的iframe,您当然可以忘记操作其内容。 –

+0

谢谢你。说得通。 – 3Dom

-4

无法操作任何一个iFrame的行动通过JS。

这是一个iFrame的全部要点。

今天尝试,永远尝试。它不能做到。这就是为什么Facebook“像”按钮和许多其他大联盟项目总是包含iFrames,所以你不能改变他们的样子或他们做什么。

+0

是的,但前提是你在谈论跨域的情况。您也可能需要/想要查看“document.domain”设置。 – Tom

+0

我可以删除这个答案吗?一旦你意识到新的东西,你应该能够删除自己的回复... – 3Dom

+0

我一直想知道同样的事情。有点烦人的方式。它并不总是意识到新事物,它也可能会发生变化。互联网毕竟改变了。 – Tom

0

从父窗口

if (window.parent.$("#myForm").length > 0) { 
    window.parent.$("#myForm").submit(); 
}