如何确定Chrome窗口是否从Chrome扩展最小化

How to determine if Chrome Window is miniminzed from a Chrome Extension

本文关键字:Chrome 扩展 最小化 窗口 何确定 是否      更新时间:2023-09-26

我正在编写一个chrome扩展,想确定是否最小化了chrome窗口。在搜索stackoverflow.com时,我找到了以下解决方案,但它对我不起作用,我得到了一个错误:响应windows.get:TypeError:undefined不是chrome扩展的函数://。。。。。。

我的后台有以下代码.js

chrome.windows.onFocusChanged.addListener(function(windowId) {
    if (windowId === -1) {
         console.window("Minimized");
    } else {
        chrome.windows.get(windowId, function(chromeWindow) {
            if (chromeWindow.state === "minimized") {
                console.window("Minimized");
            } else {
                console.window("NOT Minimized");
            }
        });
    }
});

是否有任何特殊权限,我应该添加到清单,以使上述代码工作?非常感谢您的帮助。

您的问题很明显:您在#3、#7和#9行做什么?没有这样的console.window()函数。。。这就是为什么您会得到这个错误:因为对象console的属性window显然是未定义的。看起来你正在尝试记录一些信息,但你使用了错误的功能您想要的是console.log()

这是正确的代码:

chrome.windows.onFocusChanged.addListener(function(windowId) {
    if (windowId === -1) {
         console.log("Minimized");
    } else {
        chrome.windows.get(windowId, function(chromeWindow) {
            if (chromeWindow.state === "minimized") {
                console.log("Minimized");
            } else {
                console.log("NOT Minimized");
            }
        });
    }
});

此外,引用文件:

当请求时,windows.Window将包含tabs.Tab对象的数组。如果需要访问tabs.TaburltitlefavIconUrl属性,则必须在清单中声明"tabs"权限。

因此,如果您也想访问窗口的选项卡,则必须在清单中添加权限:

...
"permissions": [
    "tabs", ...
],
...

注意:您永远不会将其记录到"Minimized",因为onFocusChanged事件只在某个窗口聚焦时触发,而不是在失去焦点时触发。如果您想查看是否有任何窗口被最小化,您必须使用chrome.windows.getAll()方法并在各个窗口上迭代,以检查它们是否被最小化。


附录:检查最小化了哪些窗口:

function doSomethingWithMinimizedWindows(windows) {
    for (var i = 0; i < windows.length; i++) {
        // do something with windows[i]
        // for example:
        console.log('Window #'+windows[i].id+' is minimized!');
    }
}
chrome.windows.getAll(function(windows) {
    var minimized = [];
    for (var i = 0; i < windows.length; i++) {
        if (windows[i].state === "minimized") {
            minimized.push(windows[i]);
        }
    }
    doSomethingWithMinimizedWindows(minimized);
});

上面的代码将产生如下内容:

 Window #378 is minimized!
 Window #457 is minimized!
 Window #460 is minimized!
 Window #463 is minimized!