我有一个页面,其中包含一个包含html页面的iframe。我想从iframe中访问父页面中的Javascript变量。主页面中变量的名称是observer
。从iframe访问父页面中的变量
我已经试过这
parent.observer = 'aadasds';
,但我收到以下错误:
Permission denied for to get property Window.observer from
。 I帧(及家长)之间
我有一个页面,其中包含一个包含html页面的iframe。我想从iframe中访问父页面中的Javascript变量。主页面中变量的名称是observer
。从iframe访问父页面中的变量
我已经试过这
parent.observer = 'aadasds';
,但我收到以下错误:
Permission denied for to get property Window.observer from
。 I帧(及家长)之间
交换价值,如果这两个网站都来自同一个域只允许。如果他们这样做,你的例子应该工作。如果他们不这样做,浏览器会禁止通信。
然而有许多黑客绕过这个:例如使用第三的iframe中Julien le Comte's blog描述的Yahoo.CrossFrame库,以使单向通信,或“调整周围的iframe的iframe”中描述Adam Fortuna's blog使-idea双向沟通。
编辑(因为人们似乎仍然看这个老答案):
在现代浏览器可以使用postMessage到I帧之间交换数据。有许多JavaScript库也尝试在旧版浏览器中模拟该功能。例如。通过误用location.hash,就像jquery-postmessage-plugin一样。
听起来好像你的iframe使用不同的域。如果不使用相同的域,所有主流浏览器都会阻止访问父内部框架。 IE如果你有域名www.test.com
,并且你从www.google.com
中嵌入了一个页面,并尝试从谷歌网站访问/修改任何东西,你将被拒绝访问。
对方回答这个问题说明了实现API post message
。这也可以用来发送/接收来自不同域的不同帧的数据。但是,与使用相同域的两个框架相比,您可以使用的功能有限。
话虽这么说,这里是如果你的I帧都使用相同的域答案。
window.parent.observer;
希望这可以帮助别人:)
我们可以看到一些代码/链接? – 2010-10-07 22:44:55
代码示例会很有帮助。不过,我相信你只能在父页面访问一个变量,如果它来自同一个域。如果iframe存在于父项之外的其他域中,则可能是问题的根源。 – 2010-10-07 23:03:26
http://www.dyn-web.com/tutorials/iframes/ – zod 2010-10-08 02:56:55