2009-05-19 66 views
0

我有一個嵌入了iframe頁面的HTML + javascript頁面。我希望能夠在嵌入式頁面中使用javascript在封閉頁面中觸發提交按鈕(這會導致POST)。有沒有圖書館已經這樣做?在包含的iframe中觸發按鈕

回答

7

如果IFRAME主機在同一個域中的頁面,你可以說

// To trigger from the enclosing page 
var yourFrame = document.getElementById("iframeId"); 
if(yourFrame.contentDocument) {  
    yourFrame.contentDocument.getElementById("formId").submit(); // FF, etc 
} else { 
    yourFrame.contentWindow.document.getElementById("formId").submit(); // IE 
} 

// To trigger from the enclosed page 
document.getElementById("formId").submit(); 

...其中iframeId是iframe的ID,並formId是iframe中表單的ID,東西像

裏面的文件:

<iframe id="iframeId" src="/somePage.html" ... > 

裏面的文件在 「somePage.html」:

<form id="formId" method="post" action="..."> 

注意,如果IFRAME承載的網頁在其他領域,那麼,如果你嘗試從封閉的頁面提交,你可能會得到某種形式的「拒絕訪問」錯誤。這是瀏覽器爲防止惡意腳本而採取的安全預防措施(例如,防止像代表用戶自動提交表單)

+0

yourFrame.contentWindow.document只適用於IE – geowa4 2009-05-19 17:37:04

+0

@George:你絕對正確;感謝捕捉! – 2009-05-19 17:40:50

1

iframe需要位於同一個域中,否則您就是SOL。

要訪問框架中的元素,您需要在不同的瀏覽器中表現不同。

首先,獲得幀:

  • document.getElementById始終有效。
  • window.frames[ frameName ]應該也沒關係,但使用第一個

然後得到的文件(這裏就是它得到棘手):

var doc = yourFrame.contentDocument ? yourFrame.contentDocument : yourFrame.contentWindow.document 

標準的瀏覽器需要使用contentDocument; IE(至少在8之前)使用contentWindow.document來獲取文檔。

最後,您可以抓取表單並提交。

doc.getElementById('yourForm').submit()