2014-10-16 29 views
1

我正在編寫Chrome擴展程序,並且想要確定Chrome窗口是否已最小化。在搜索stackoverflow.com我發現了以下解決方案,但它不爲我工作,我得到一個錯誤:響應於windows.get錯誤:TypeError:undefined不是鉻擴展功能:// ..... 。如何確定是否從Chrome擴展程序中最小化了Chrome窗口

我在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

你的問題幾乎是顯而易見的:你在線#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 of tabs.Tab objects. You must declare the "tabs" permission in your manifest if you require access to the url , title , or favIconUrl properties of tabs.Tab .

所以,如果你也想訪問Windows'選項卡,你就必須添加您的清單中的許可:

... 
"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! 
+0

你是正確的再次它從來沒有日誌「最小化「我基本上想檢查它是否最小化。你可以請一些代碼解釋我如何檢查所有的選項卡是否最小化與chrome.windows.getAll()感謝您的時間,我真的很感激你的幫助。 – bluenile 2014-10-16 19:48:00

+1

@bluenile編輯我的答案,希望這有助於。如果是這樣,請考慮將其標記爲正確,以便讓其他人輕鬆找到它。 – 2014-10-16 19:58:58

+0

非常感謝,謝謝完美:) – bluenile 2014-10-16 20:00:15

相關問題