我有两个窗口:父窗口和子窗口(html 页面和 iframe)。
我有一个脚本库加载到父窗口。
我想从子窗口重用这个库而不将相同的脚本加载到子窗口中。
像这样调用父窗口的函数很容易:
top.LibraryMethod();
但是这里有一个问题:LibraryMethod 将与父窗口的执行上下文一起执行。这意味着脚本中使用的全局变量将从父窗口而不是子窗口收集。例如,如果 LibraryMethod 声明如下:
function LibraryMethod(){ alert(document.location.href); }
它将显示从父窗口或子窗口调用的相同值,但我需要在此处访问子窗口的文档。
有一个明显的解决方案 - 将子窗口作为函数参数传递,但这需要更改库代码,这是不可接受的。
所以,问题是如何从父窗口中声明的函数访问子窗口对象,如果这个函数是从子窗口调用的,而不引入额外的函数参数。