如何在另一个坐标系中创建一个函数



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

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

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

当子框架加载不同的HTML内容时,当父操作触发对它的调用时,在前一个内容页中创建的myhandler()函数不再可访问。

这是可能的在javascript框架创建一个函数在另一个框架?还是有别的解决办法?

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

让我们假设你有一个包含两个页面的框架集: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代码将开始看到对方,就像这些页面在同一个域名。

最新更新