2013-02-02 75 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(); 
}