如何确定Chrome扩展程序中的Chrome窗口是否已最小化

时间:2014-10-16 19:11:00

标签: javascript google-chrome dom google-chrome-extension

我正在编写Chrome扩展程序,并希望确定Chrome窗口是否已最小化。在搜索stackoverflow.com时,我发现了以下解决方案,但它不适合我,我收到错误:响应windows.get时出错:TypeError:undefined不是chrome-extension的函数:// .....

我的background.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");
            }
        });
    }
});

我是否应该向清单添加任何特殊权限以使上述代码有效?任何帮助高度赞赏。

1 个答案:

答案 0 :(得分:1)

你的问题几乎是显而易见的:你在第3,第7和第9行做什么?没有这样的console.window()函数......这就是您收到该错误的原因:因为对象window的属性console显然是未定义的。看起来您正在尝试记录某些信息,但是您使用了错误的功能。 您想要的是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"的{​​{1}},urltitle属性,则必须在清单中声明favIconUrl权限。

所以,如果你还想访问windows'标签,您必须在清单中添加权限:

tabs.Tab

注意:您永远不会记录... "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);
});