我正在编写一个 Chrome 扩展程序,想要确定 Chrome 窗口是否已最小化。在搜索 stackoverflow.com 时,我找到了以下解决方案,但它对我不起作用,并且出现错误: Error in response to windows.get: TypeError: undefined is not a function at 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");
}
});
}
});
我是否应该在 list 中添加任何特殊权限才能使上述代码正常工作?非常感谢任何帮助。
最佳答案
你的问题几乎很明显:你在#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");
}
});
}
});
另外,引用文档:
When requested, a
windows.Window
will contain an array oftabs.Tab
objects. You must declare the"tabs"
permission in your manifest if you require access to theurl
,title
, orfavIconUrl
properties oftabs.Tab
.
因此,如果您还想访问 Windows 选项卡,则必须在 list 中添加权限:
...
"permissions": [
"tabs", ...
],
...
注意:您永远不会让它记录“最小化”
,因为 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!
关于javascript - 如何确定 Chrome 窗口是否通过 Chrome 扩展程序最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26412095/