我有第三方生成的框架集(来自帮助系统),我可以将代码添加到包含我的内容页面的子框架中。我无法修改其他框架集内容,因为它是由构建过程生成的。
我可以在每个加载到子帧中的HTML内容页面上有一些js代码myhandler()
。触发在顶部框架中发生操作时调用此myhandler()
。
我想在子帧中创建函数但是它由父(顶部)框架拥有,因此它只会被创建一次意味着我可以测试top.myhandler
是否已经设置,如果是这样的话重用它。
当子帧加载了不同的内容HTML时,当父操作触发对它的调用时,将无法再访问在先前内容页面中创建的myhandler()
函数。
这是否可以在javascript中为一个帧在另一个帧中创建一个函数?或者还有其他解决方案吗?
答案 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代码将开始互相发送,就像这些页面位于同一个域中一样。