gpt4 book ai didi

javascript - 我如何比较 Application.windows[x] 和 Application.activeWindow?

转载 作者:行者123 更新时间:2023-11-30 06:05:02 26 4
gpt4 key购买 nike

我正在创建一个 Firefox 扩展,我想在其中遍历 Application.windows 数组并检查其元素之一是否与 Application.activeWindow.
我的代码中提到的摘录如下所示:

for (var i in Application.windows) {
if (Application.windows[i]==Application.activeWindow) alert('debug');
// there was some more complex code than alert('debug'),
// but since it didn't work, I decided to try with an alert
}

不幸的是,从未查看过“调试”警报。因此我决定尝试这段代码(只打开一个窗口):

// the following code runs in an event listener for window.onload
alert(Application.windows[0]);
alert(Application.activeWindow);
alert(Application.windows[0]==Application.activeWindow);

Firefox 显示了 3 个警告:第一个是 [object Object],第二个是 [xpconnect wrapped fuelIWindow],最后一个(没有令我惊讶)说 false。所以我要比较的对象似乎有不同的类型。我该如何处理?提前致谢。

最佳答案

你有两个问题。

首先是 XPConnect 不支持数组值属性,因此当 FUEL(或 STEEL 或 SMILE)返回数组时,它们实际上返回的是内部对象的 nsIVariant!另一方面,单值对象返回一个隐藏内部对象的 XPConnect 包装器。

第二个是,每次访问窗口或 activeWindow 时,都会创建新的内部对象,因此即使两次调用 activeWindow 也会返回不同的对象。

解决这个问题的方法是避免使用 FUEL 并使用 window mediator 直接枚举窗口。 .

关于javascript - 我如何比较 Application.windows[x] 和 Application.activeWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5580681/

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