1

我想获得一个 Iframe 上的输入值。当我单击主页上的按钮时,我想获得这个值。

好吧,我有这段代码

主页上的 Javascript:

  var targetDiv = document.getElementById('CP_dem');

MainPage 上的 Html:一个选项卡,当您单击它时,它会加载 Iframe 和一个调用 javascript 函数的按钮

Iframe 上的 HTML:

 Zip Code : <input class="textForm" id="CP_dem" type="text" name="CP_dem" maxlength="5" size="5" value="42101">

我想在单击 MainPageButton 时获取输入值。

javascript 代码显示“targetDiv”为空。

你能帮我么。谢谢

4

1 回答 1

0

你要说的第一件事是:

iframe 是否托管在与父网站相同的 http 主机上?如果没有,您将遇到 javascripts 同源保护,请访问:http ://en.wikipedia.org/wiki/Same_origin_policy

简而言之:您将无法访问内容。可是等等!有一个解决方法,我将在处理第二种情况后解释,其中 http 主机是相同的!

所以让我们谈谈第二种情况。那么工作很简单...

您只需要访问 iframe(可能给 iframe 标签一个 id “示例”)。然后您可以使用 example.contentWindow.document 或 example.contentDocument 访问该窗口

无论设置哪一个,都取决于浏览器。您将不得不在 js 中进行一些检查。就像是

if(document.getElementById('contentWindow.document').contentWindow) {
 ifdoc = document.getElementById('contentWindow.document').contentWindow.document
} else {
 ifdoc = document.getElementById('contentWindow.document').contentDocument
}

然后您可以像在 javascript 中一样访问表单和元素,我不会在这里介绍...

所以让我们跳到这个答案的有趣部分!让我们围绕同一个起源策略工作。这也称为“跨站点脚本”(继续谷歌......)

所以基本上它归结为一件事:

子文档和父文档都可以访问一个属性!

它是 document.location 属性!

所以,你可以做什么?

子站点可以对其进行修改,然后父站点可以对其进行监视并对更改做出反应。

另一个不错的功能是 url 片段(# 之后的部分)。这部分不会重新加载网站,因此 javascript 可以愉快地修改它,并且父站点可以定期轮询它并对其做出反应......

基本上,这为可以处理的父子文档的通信提供了基础。有设计精美的图书馆!javscript版本的“用facebook登录”也是基于同样的原理!

这意味着子文档必须与父文档合作,因此这是有意的,并且双方基本上在工作中一起工作。

所以这没关系,他们可以围绕相同的原产地政策工作。

希望这在理论上涵盖了您的问题,并为您在实践中提供了一些帮助!

祝你有美好的一天:)

于 2013-03-18T16:43:36.143 回答