我有一个包含html页面的iframe页面。我想从iframe中访问父页面中的Javascript变量。主页面中变量的名称为observer
。
我试过这个
parent.observer = 'aadasds';
但是我收到以下错误:
获取属性Window.observer的权限被拒绝 来自
答案 0 :(得分:3)
仅当两个站点来自同一域时,才允许在iframe(和父级)之间交换值。如果他们这样做,那么你的例子应该可行。如果他们不这样做,浏览器会禁止通信。
然而,有许多黑客可以绕过这个问题:例如Julien le Comte's blog中描述的Yahoo.CrossFrame库使用第三个iframe来启用单向通信,或者“调整iframe周围的iframe大小”-idea描述在Adam Fortuna's blog中实现双向沟通。
编辑(因为人们似乎还在阅读这个旧答案):
在现代浏览器中,您可以使用postMessage在iframe之间交换数据。有许多javascript库试图在旧版浏览器中模拟该功能。例如。通过误用location.hash,就像jquery-postmessage-plugin那样。
答案 1 :(得分:2)
听起来好像你的iframe正在使用不同的域名。如果不使用相同的域,则所有主要浏览器都会阻止访问父iframe。 IE如果您拥有域www.test.com
,并且您嵌入了www.google.com
中的某个页面并尝试访问/修改Google网站上的任何内容,则您将被拒绝访问。
此问题的另一个答案解释了已实施的API post message
。这也可以用于从不同域的不同帧发送/接收数据。但是,与使用相同域的两个帧相比,使用它可以做的事情是有限的。
话虽如此,如果您的iframe使用的是同一个域,这里就是答案。
window.parent.observer;
希望这有助于某人:)