触发包含iframe中的按钮

时间:2009-05-19 17:20:53

标签: javascript html iframe

我有一个HTML + javascript页面,它在iframe中嵌入了一个页面。我希望能够在封闭页面中使用javascript触发嵌入页面中的提交按钮(导致POST)。是否有图书馆已经这样做了?

2 个答案:

答案 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()