2013-07-24 90 views
2

我試圖將當前選項卡導航到browser_action Chrome擴展中的URL,以響應用戶輸入的關鍵字。什麼是最好的方法來做到這一點?設置browser_action中當前選項卡的window.location.href Chrome擴展

首先,我嘗試了一個簡單的JavaScript形式,但我意識到,JavaScript沒有在當前選項卡上設置window.location.href,因爲我沒有使用executeScript。

到目前爲止,我已經找到了最好的方法是使用executeScript:

chrome.tabs.executeScript(null, {code:"window.location.href = '" + url + "';"}); 

這也包括添加權限清單:

"permissions": [ 
    "tabs", 
    "http://*/", 
    "https://*/" 
], 

的問題是:

  1. 這種方法在newtab頁面上不起作用。 (加入「鉻:// * /」打破了擴展,並防止它被安裝)

  2. 它要求的權限明確設置爲每一個協議類型,否則延期不會對某些類型的網頁工作。

是否有製作Chrome標籤從browser_action彈出瀏覽打開的選項卡的特定頁面的一個更強大的方法嗎?

回答

5

不需要內容腳本或主機權限。只要使用chrome.tabs.update(不需要tabs許可):

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.update(tab.id, { 
     url: url 
    }); 
}); 
+0

謝謝,我要補充這個答案是tab.id被空將默認爲當前選項卡。 –

相關問題