首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用子窗口上下文执行父窗口中定义函数

如何使用子窗口上下文执行父窗口中定义函数
EN

Stack Overflow用户
提问于 2012-07-13 18:12:31
回答 1查看 572关注 0票数 0

我有两个窗口:父窗口和子窗口(html页面和iframe)。

我有一个脚本库加载到父窗口。

我想从子窗口重用这个库,而不是将相同的脚本加载到子窗口中。

调用父窗口的函数很容易,如下所示:

代码语言:javascript
复制
    top.LibraryMethod();

但这里有一个问题: LibraryMethod将在父窗口的执行上下文中执行。这意味着脚本中使用的全局变量将从父窗口而不是子窗口中收集。例如,如果LibraryMethod声明如下:

代码语言:javascript
复制
    function LibraryMethod(){ alert(document.location.href); }

它将显示从父窗口或子窗口调用的相同值,但我需要在这里访问子窗口的文档。

有一个明显的解决方案-传递子窗口作为函数参数,但这需要更改库代码,这是不可接受的。

因此,问题是如何从父窗口中声明的函数访问子窗口对象,如果从子窗口调用此函数,而不引入额外的函数参数。

EN

回答 1

Stack Overflow用户

发布于 2012-07-13 18:17:18

所以,问题是如何从父窗口中声明的函数访问子窗口对象,如果从子窗口调用该函数,而不引入额外的函数参数。

你不能。你要么必须传入函数参数,要么你必须控制在父窗口中加载库函数的上下文(即使你这样做了,第二种选择也是不可靠的)。如果这两者都不具备,则无法更改在父窗口函数中解析全局变量的方式。这两件事都需要更改库的脚本文件(我假设它在一个单独的脚本文件中,而不仅仅是script标记中的内联内容)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11468457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档