我正在编写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");
}
});
}
});
我是否应该向清单添加任何特殊权限以使上述代码有效?任何帮助高度赞赏。
答案 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}},url
或title
属性,则必须在清单中声明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);
});