如何在另一个框架中创建一个函数?

时间:2011-10-01 00:55:18

标签: javascript function frames

我有第三方生成的框架集(来自帮助系统),我可以将代码添加到包含我的内容页面的子框架中。我无法修改其他框架集内容,因为它是由构建过程生成的。

我可以在每个加载到子帧中的HTML内容页面上有一些js代码myhandler()。触发在顶部框架中发生操作时调用此myhandler()

我想在子帧中创建函数但是它由父(顶部)框架拥有,因此它只会被创建一次意味着我可以测试top.myhandler是否已经设置,如果是这样的话重用它。

当子帧加载了不同的内容HTML时,当父操作触发对它的调用时,将无法再访问在先前内容页面中创建的myhandler()函数。

这是否可以在javascript中为一个帧在另一个帧中创建一个函数?或者还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

跨框架javascript有1个条件:所有涉及的页面(在不同的框架中)需要在同一个域。如果页面位于不同的域或子域中,则出于安全目的,将限制跨框架javascript访问。

假设您有一个包含2个页面的框架集:index.html和index2.html

如果这些页面位于同一个域中 - 它们将共享相同的javascript命名空间,即链接到index.html的所有javascript库都可以从index2.html访问,反之亦然。

如果页面位于同一域的不同子域中,则可以逐步升级几个级别。例如:

frame1 contains:    http://myrepo.site.com/index.html
frame2 contains:    http://another.site.com/index2.html

您可以同时设置(在JavaScript中):document.domain = "site.com" 之后 - 两个页面上的javascript代码将开始互相发送,就像这些页面位于同一个域中一样。