首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在包含的iframe中触发按钮

在包含的iframe中触发按钮
EN

Stack Overflow用户
提问于 2009-05-19 17:20:53
回答 2查看 1.8K关注 0票数 0

我有一个HTML + javascript页面,其中嵌入了一个iframe页面。我希望能够触发一个提交按钮(这会导致一个帖子)内嵌入的网页使用javascript的封闭页面。有没有图书馆已经在做这件事了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-19 17:24:19

如果IFRAME在同一个域中托管一个页面,您可以这样说

代码语言:javascript
复制
// 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,类似于

在文档内部:

代码语言:javascript
复制
<iframe id="iframeId" src="/somePage.html" ... >

在文档中的“somePage.html”处:

代码语言:javascript
复制
<form id="formId" method="post" action="...">

请注意,如果IFRAME托管的是另一个域中的页面,那么如果您尝试从封闭的页面提交,您可能会收到某种“拒绝访问”的错误。这是浏览器为防止恶意脚本攻击而采取的安全预防措施(例如,为了防止自动提交表单之类的事情)。

票数 7
EN

Stack Overflow用户

发布于 2009-05-19 17:35:57

iframe必须在同一个域中,否则您就是SOL。

要访问框架中的元素,您需要在不同的浏览器中有不同的行为。

首先,获取帧:

  • document.getElementById always works.
  • window.frames[ frameName ]也应该可以,但请使用第一个

然后获取文档(这是它变得棘手的地方):

代码语言:javascript
复制
var doc = yourFrame.contentDocument ? yourFrame.contentDocument : yourFrame.contentWindow.document

标准浏览器要求使用contentDocument;IE (至少在8版本之前)使用contentWindow.document获取文档。

最后,您可以抓取表单并提交它。

代码语言:javascript
复制
doc.getElementById('yourForm').submit()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/884041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档