gpt4 book ai didi

javascript - JavaScript 中的对象同时定义和未定义(在 FireFox 扩展中)

转载 作者:可可西里 更新时间:2023-11-01 01:26:14 25 4
gpt4 key购买 nike

我正在寻找一个 bug在 FireFox 扩展中。我终于设法亲眼看到了(我之前只有报告),但我不明白我所看到的是怎么可能的。

错误控制台中我的扩展程序的一条错误消息是“gBrowser 未定义”。这本身就已经足够令人惊讶了,因为覆盖在 browser.xul 和 navigator.xul 之上,我希望 gBrowser 可以从两者获得。更糟糕的是实际发生的地方:nextplease.js 的第 101 行.也就是说,在函数isTopLevelDocument 中,它只从onContentLoaded 调用,这里只从onLoad 调用:

gBrowser.addEventListener(this.loadType, function (event) {
nextplease.loadListener.onContentLoaded(event);
},
true);

因此 gBrowseronLoad 中定义,但在 isTopLevelDocument 中未定义。

当我尝试实际使用扩展时,我收到另一个错误:“nextplease is not defined”。有趣的是,它发生在第 853 行和第 857 行。也就是说,函数中

nextplease.getNextLink = function () {
nextplease.getLink(window.content, nextplease.NextPhrasesMap, nextplease.NextImagesMap, nextplease.isNextRegExp, nextplease.NEXT_SEARCH_TYPE);
}

nextplease.getPrevLink = function () {
nextplease.getLink(window.content, nextplease.PrevPhrasesMap, nextplease.PrevImagesMap, nextplease.isPrevRegExp, nextplease.PREV_SEARCH_TYPE);
}

因此 nextplease 以某种方式定义得足以调用这些函数,但并未在它们内部定义。

最后,在Execute JS中执行typeof(nextplease)返回“object”。 gBrowser 也是如此。

这怎么会发生?有什么想法吗?

最佳答案

对于第二种情况:

nextplease.getNextLink = function () {
nextplease.getLink(window.content, nextplease.NextPhrasesMap, nextplease.NextImagesMap, nextplease.isNextRegExp, nextplease.NEXT_SEARCH_TYPE);
}

nextplease.getPrevLink = function () {
nextplease.getLink(window.content, nextplease.PrevPhrasesMap, nextplease.PrevImagesMap, nextplease.isPrevRegExp, nextplease.PREV_SEARCH_TYPE);
}

我会试试这个:

nextplease.getNextLink = function () {
this.getLink(window.content, this.NextPhrasesMap, this.NextImagesMap, this.isNextRegExp, this.NEXT_SEARCH_TYPE);
}

nextplease.getPrevLink = function () {
this.getLink(window.content, this.PrevPhrasesMap, this.PrevImagesMap, this.isPrevRegExp, this.PREV_SEARCH_TYPE);
}

关于javascript - JavaScript 中的对象同时定义和未定义(在 FireFox 扩展中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com