我有一个chrome扩展程序,其中扩展程序选项卡订阅了后台页面发出的事件。因此,后台页面的事件模块包含对扩展选项卡中定义的处理程序功能的引用。

扩展选项卡可能会关闭,导致处理程序仍然(大部分)可以运行,但不再需要。重新加载扩展选项卡时会发生类似情况,因为扩展选项卡会重新初始化其window对象,从而在窗口中积累了对被指定为事件处理程序的窗口中函数(的新实例)的多余引用。

我正在寻找的是后台页面事件模块,以便能够识别对扩展选项卡中已关闭或重新加载的处理程序的引用,以使它们相应地过期。

我玩弄了unloadbeforeunload事件,以使扩展选项卡有机会注销其自己的处理程序。这似乎是理论上最可取的方法。不幸的是,这两个事件都不可靠。

最佳答案

查看window.closed属性。如果全局上下文是实时的,则为false。如果选项卡/框架不再有效,则window.closedtrue(其中window是窗口对象,例如iframe的.contentWindow,返回值window.openchrome.extension.getViews()的结果等)。 )

尽管最好是在窗口死时阻止代码运行,这可能会更好。

关于javascript - 如何判断一个函数是否在已关闭或重新加载的窗口中定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28228743/

10-12 00:17
查看更多