2014-09-28 104 views
0

前言:我是這個東西的初學者。在Chrome擴展中切換URL

我正在嘗試使用預定義的網址替換當前選項卡網址的擴展名。到目前爲止,我有以下幾點:

chrome.tabs.getSelected(null, function(tab){ 
     chrome.tabs.update(tabs.id, {url: "https://www.wikipedia.org/"}); 
    }); 

Chrome應用開發工具告訴我,「標籤沒有定義」,但我有我的清單權限「選項卡」。清單:

"permissions": [ 
    "tabs", 
    "declarativeContent", 
    "https://www.wikipedia.org/" 
], 

"background": { 
    "scripts": ["background.js"], 
    "persistent": false 
}, 

"browser_action": { 
    "default_icon": "icon-19.png", 
    "default_title": "Simple-Switch" 
} 
+0

您可能正嘗試從上下文腳本運行此操作。正確? – Xan 2014-09-28 16:21:52

+0

我不知道我是否試圖從上下文腳本運行它。我有一個清單文件和一個JavaScript文件。我發佈的第一個是javascript,下面的是在清單中。 – 2014-09-28 17:47:38

+0

請發佈您的清單,然後 – Xan 2014-09-28 17:55:04

回答

2

權限不申報,你可以使用變量(如是否有一個「var tabs」);他們定義了你允許使用哪些功能(在這種情況下,你可以調用chrome.tabs中的函數)。

您的問題是您的回調採用參數tab,但您使用變量tabs。因此「標籤沒有定義」。所以最簡單的解決方案是function(tabs)。但是,你也應該使用tabs.query,而不是過時的tabs.getSelected

chrome.tabs.query({active:true,currentWindow:true}, function(tabs){ 
    chrome.tabs.update(tabs[0].id, {url: "https://www.wikipedia.org/"}); 
}); 

您還可以更改tabs權限activeTab

+0

D'oh!很好,@Teepeemm,因爲它很容易混淆'chrome.tabs'不可用。投票結束爲錯字。 – Xan 2014-09-28 22:00:20

+0

@Xan我同意一個錯字是根本原因,但我不確定這樣做是否合適。部分問題在於OP看到了相應的錯誤消息,但是對它的解釋不正確(「我的清單中有'標籤'」)。另一種看待它的方式是,如果有人認爲「權限」:[「foo」]意味着「foo.id」的存在。 – Teepeemm 2014-09-28 22:15:36

+0

@Teepeemm謝謝!祝你有美好的一天。 – 2014-09-28 22:34:48