簡體   English   中英

所有chrome.tabs都出現相同的錯誤

[英]All chrome.tabs present the same error

我正在嘗試制作一個每2分鍾重新加載一個標簽的擴展程序,但我希望它嘗試重新加載即使互聯網處於脫機狀態(因此它會在重新啟動時重新加載)。 當窗口發出錯誤(例如離線)時,使用location.reload()不起作用,所以我認為最好的方法是使用chrome.tabs.reload()。

問題是,所有chrome.tabs給我一個類似的錯誤,如果我嘗試使用一個空參數它應該工作,因為它根據文檔默認為當前選項卡,而是:

chrome.tabs.reload({});
Uncaught TypeError: Cannot call method 'reload' of undefined 

如果我嘗試獲取當前標簽ID:

chrome.tabs.query({currentWindow: true, active: true}, function (tabs) {
  console.log(tabs[0]);
});
Uncaught TypeError: Cannot call method 'query' of undefined 

同樣,每個chrome.tabs都有類似的錯誤,“不能調用未定義的xxyyzz”。 這就好像鉻無法看到我的標簽,發生了什么?

我的manifest.js是:

{
  "manifest_version": 2,

  "name": "test",
  "description": "",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "js": ["reload.js"],
      "run_at": "document_end"

    }
  ],
  "permissions": [
    "tabs","storage","http://www.google.com"
  ]
}

無法從內容腳本中訪問 chrome.tabs

[...]內容腳本有一些限制。 他們不可以:

  • 使用chrome。* API(chrome.extension的部分除外), 例如chrome.tabs
  • 使用其擴展頁面定義的變量或函數
  • 使用由網頁或其他內容腳本定義的變量或函數

[...]

您必須使用Background Page才能使用chrome.tabs Api方法

並從那里調用reload

更新:
我添加了一個簡單的示例background.js ,它通過上下文菜單點擊切換選項卡的自動加載(2分鍾)。 我盡力評論它

擾流警告: 不要點擊這個鏈接 ,如果你做到這一點作為學習實踐(或任何類似),為自己,否則隨意做任何你想要的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM