【发布时间】:2019-11-25 11:11:32
【问题描述】:
我无法在本地存储的 HTML 框架集中跨框架读取 JS 变量
即使在本地存储的框架集中(例如,在定义框架集 =“父”的 htm 页面中)声明变量时,“同源”策略也会触发。尝试从框架访问此变量时,出现“跨域对象的权限被拒绝”错误。 Firefox 会发生这种情况,而 Internet Explorer 没有异议。
现在这显然不是“跨域对象”。我认为这是 Firefox 中的一个错误。它破坏了我编写的一个应用程序,我们在许多 CDR 上分发给客户。该应用程序依赖于跨本地框架集读取这些 Javascript 变量。我想知道是否有办法让它再次工作。非常感谢您的帮助。
示例:不幸的是,这仅适用于本地存储的文件,因此我无法演示。您必须将这三个文件存储在本地才能看到问题。
这是我的在线示例文件: http://mpeters.de/temp/frameset/sameorigin_frameset.htm 但正如我所说,它适用于在线版本。
“父”文件中发生了什么:
<script>var parentvar='hello';</script>
<frameset>
<frame name="frame1" src="sameorigin_frame1.htm">
<frame name="frame2" src="sameorigin_frame2.htm">
</frameset>
在“frame1”帧中:
<script>var frame1var=parent.parentvar;alert(frame1var);</script>
将框架集加载为本地文件会导致 Firefox 出错。
框架应该从父文件中读取并显示变量。在 MSIE 中,确实如此。在 Firefox 中,我收到“SecurityError: Permission denied to access property “parentvar” on cross-origin object”
【问题讨论】:
标签: firefox same-origin-policy frameset