js 在iframe里面怎么给一个父窗口的text赋值啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 在iframe里面怎么给一个父窗口的text赋值啊?相关的知识,希望对你有一定的参考价值。

在框架页通过parent就可以对父窗口内元素进行操作。
思路:
建两个普通html页,a.html 、b.html
## a.html code##

<input type="text" id="name" value="" />
<iframe src="b.html" width="100%" height="200"></iframe>
## b.html code##

<script type="text/javascript">
function fuck()
parent.document.getElementById('name').value='框架页向父窗口元素赋值!';

</script>
这是被框架页面!

<input type="button" value="点我一下" onclick="fuck();" />
参考技术A iframe的话貌似不能。
你可以试试 将function方法写于公用方法里。在子页面里进行调用试试

javascript, iframe, security - 尝试从父窗口访问 js 函数时权限被拒绝

【中文标题】javascript, iframe, security - 尝试从父窗口访问 js 函数时权限被拒绝【英文标题】:javascript, iframe, security - Permission denied when tring to access a js function from parent window 【发布时间】:2011-08-30 23:20:29 【问题描述】:

祝大家有美好的一天。

我有一个包含 iframe 的页面。在那个 iframe 中,我有一个名为 test() 的脚本。我需要从父窗口访问该功能。在四处询问后,我得到了这个解决方案:

<div onclick="document.getElementById('targetFrame').contentWindow.teste();">Test</div>

点击后应该运行测试功能。问题是我收到“Permission denied to access property test”错误。

对我来说这似乎是一个权限错误,所以我将 iframe 权限中加载的文件更改为 777,但没有任何结果。

注意:iframe 中加载的文件不在同一个域中。

【问题讨论】:

这个已经被问过很多次了:***.com/questions/364952/… 【参考方案1】:

默认禁止访问其他域的页面,因为浏览器使用same origin policy。有几种解决方法,例如使用 location.hash 或 window.name 在框架之间进行通信。 HTML5 中最新的和标准化的是 postMessage-interface。 有跨浏览器解决方案库http://easyxdm.net/wp/。

【讨论】:

好的...我该如何更改?我在两个域上都有 root 访问权限。 这是用于 Intranet,您可以控制所有浏览器吗? 如果是这种情况,您可以在某些浏览器中禁用网络安全。搜索禁用 SOP:***.com/questions/330427/…,但通常只有丑陋的黑客存在,在浏览器上实施的安全策略是有原因的 如果我为 iframe 文件使用子域怎么办?【参考方案2】:

我不确定是否可能,跨窗口(框架)通信必须在相同的域、协议和主机名中。有关详细信息,请参阅 Same origin policy for JavaScript 和 Cross domain communication with iframes

【讨论】:

以上是关于js 在iframe里面怎么给一个父窗口的text赋值啊?的主要内容,如果未能解决你的问题,请参考以下文章

在iframe中如何调用父窗体的方法?

如何获取iframe的父窗口的body标签啊

easyui 父页面怎么调用tab 子页面里面方法

html里面,点击按钮时,怎么使用js或jq给iframe里面的表单赋值和提交

js 父页面不能调用iframe页面的方法怎么回事?

iframe子页面样式怎么在父页面修改