我有一個嵌入了iframe頁面的HTML + javascript頁面。我希望能夠在嵌入式頁面中使用javascript在封閉頁面中觸發提交按鈕(這會導致POST)。有沒有圖書館已經這樣做?在包含的iframe中觸發按鈕
0
A
回答
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
承載的網頁在其他領域,那麼,如果你嘗試從封閉的頁面提交,你可能會得到某種形式的「拒絕訪問」錯誤。這是瀏覽器爲防止惡意腳本而採取的安全預防措施(例如,防止像代表用戶自動提交表單)
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()
相關問題
- 1. 關閉包含Iframe的Popup,單擊iframe上的按鈕
- 2. 包含JSP頁面提交不觸發操作按鈕
- 3. 觸發按鈕
- 4. 按鈕父iframe中的iframe
- 5. 包含的佈局中的圖像按鈕不會觸發onclicklistener上ActionDown
- 6. 在asp.net中沒有觸發的按鈕
- 7. 按鈕時觸發
- 8. 無法從包含在擴展工具包中的用戶控件中的按鈕觸發事件DropDownButton
- 9. 觸發按鈕按下
- 10. ReactJS OnKeyPress觸發按鈕按
- 11. Tkinter - 包含按鈕的類
- 12. 在按鈕中包含HTML箭頭
- 13. UINavigationBar按鈕在觸摸條之下發生觸發時觸發
- 14. 添加發送按鈕在Facebook的iframe喜歡按鈕
- 15. 在webview中觸發後退按鈕
- 16. 按鈕在HTML中觸發快捷鍵
- 17. 在JavaScript中點擊觸發按鈕?
- 18. 檢查按鈕在matplotlib中未觸發
- 19. 將文本插入設計模式iframe由iframe之外的按鈕觸發
- 20. 使按鈕觸發鍵2按鈕
- 21. 輸入按鈕時觸發按鈕
- 22. 按鈕單擊不在觸發器形式中觸發
- 23. 居中包含按鈕的窗體div
- 24. 如何觸發一個提交按鈕時iframe url更改
- 25. 包含觸摸屏使用按鈕的滾動查看器
- 26. vb.net/winform DropDown包含按鈕
- 27. 如何在包含在iframe
- 28. Repeater中的按鈕不會觸發ItemCommand
- 29. ICommand不會觸發ItemTemplate中的按鈕
- 30. 在按鈕B的TouchDown期間觸發按鈕A上的TouchDown
yourFrame.contentWindow.document只適用於IE – geowa4 2009-05-19 17:37:04
@George:你絕對正確;感謝捕捉! – 2009-05-19 17:40:50