如何使用子窗口上下文执行在父窗口中定义的函数
How to execute functions defined in parent window with child window context
我有两个窗口:parent和child(html页面和iframe)。
我有一个脚本库加载到父窗口。
我想从子窗口重用这个库,而不需要将相同的脚本加载到子窗口中。
调用父窗口的函数很容易,如下所示:
top.LibraryMethod();
但这里有一个问题:LibraryMethod将使用父窗口的执行上下文执行。这意味着脚本中使用的全局变量将从父窗口而不是子窗口收集。例如,如果LibraryMethod声明如下:
function LibraryMethod(){ alert(document.location.href); }
它将显示从父窗口或子窗口调用的相同值,但我需要访问子窗口的文档。
有一个明显的解决方案-将子窗口作为函数参数传递,但这需要更改库代码,这是不可接受的。
因此,问题是如何从父窗口中声明的函数访问子窗口对象,如果该函数是从子窗口调用的,而不引入额外的函数参数。
因此,问题是如何从父窗口中声明的函数访问子窗口对象,如果该函数是从子窗口调用的,而不引入额外的函数参数。
你不能。你要么必须传入函数参数,要么必须控制在父窗口中加载库函数的上下文(即使你这样做了,第二个选项也是不可靠的)。如果两者都没有,则无法更改在父窗口函数中解析全局变量的方式。这两件事都需要更改库的脚本文件(我假设它在一个单独的脚本文件中,而不仅仅是script
标记中的内联内容)。
相关文章:
- 如何在选项卡上定义属性'的主窗口对象
- 如何解决'窗口未定义'终端上的节点JS出错
- Internet窗口未定义
- 自定义警报/弹出窗口和保持JS引擎
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- requirejs优化器错误:未定义窗口
- 用自定义javascript全局命名空间替换窗口
- 清除 Javascript 中窗口对象中的自定义变量
- 自定义社交共享未在窗口中打开
- 如何自定义数据::confirm弹出窗口以提示输入,该输入将附加到请求参数中
- 如何使用jquery创建自定义弹出窗口
- 如何使用Chrome'查看窗口对象中定义了哪些变量;的开发工具
- 使用自定义内容而不是url创建弹出窗口
- window.location.href窗口未在javascript中定义
- 自定义信息窗口
- 这些事件处理程序中的哪一个应该在窗口关闭时触发自定义函数
- 如何使用子窗口上下文执行在父窗口中定义的函数
- $window错误'$窗口未定义'Angular应用程序中的谷歌分析代码
- Chrome扩展-在全屏视频顶部显示自定义通知/弹出窗口(HTML元素)