我有两个窗口:父窗口和子窗口(html页面和iframe)。
我有一个脚本库加载到父窗口。
我想从子窗口重用这个库,而不是将相同的脚本加载到子窗口中。
调用父窗口的函数很容易,如下所示:
top.LibraryMethod();但这里有一个问题: LibraryMethod将在父窗口的执行上下文中执行。这意味着脚本中使用的全局变量将从父窗口而不是子窗口中收集。例如,如果LibraryMethod声明如下:
function LibraryMethod(){ alert(document.location.href); }它将显示从父窗口或子窗口调用的相同值,但我需要在这里访问子窗口的文档。
有一个明显的解决方案-传递子窗口作为函数参数,但这需要更改库代码,这是不可接受的。
因此,问题是如何从父窗口中声明的函数访问子窗口对象,如果从子窗口调用此函数,而不引入额外的函数参数。
发布于 2012-07-13 18:17:18
所以,问题是如何从父窗口中声明的函数访问子窗口对象,如果从子窗口调用该函数,而不引入额外的函数参数。
你不能。你要么必须传入函数参数,要么你必须控制在父窗口中加载库函数的上下文(即使你这样做了,第二种选择也是不可靠的)。如果这两者都不具备,则无法更改在父窗口函数中解析全局变量的方式。这两件事都需要更改库的脚本文件(我假设它在一个单独的脚本文件中,而不仅仅是script标记中的内联内容)。
https://stackoverflow.com/questions/11468457
复制相似问题