我有一个HTML + javascript页面,它在iframe中嵌入了一个页面。我希望能够在封闭页面中使用javascript触发嵌入页面中的提交按钮(导致POST)。是否有图书馆已经这样做了?
答案 0 :(得分: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 :(得分: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()