2014-03-13 49 views
1

我在Chrome 31.0.1650.57上有一個browserAction擴展測試。我想在用戶點擊擴展圖標時獲取活動標籤網址,保存並稍後使用。如何在打開彈出窗口時獲取當前標籤頁的URL [無標籤權限]

我能夠做到這一點時使用標籤權限。但是這個許可有很大的權力(我不需要),用戶也在抱怨這一點。

我跟着文章切換到activeTab權限http://developer.chrome.com/extensions/activeTab但它只適用於沒有彈出。正如你在make_page_red例子中看到的那樣。

 
chrome.browserAction.onClicked.addListener(function(tab) { 
    // No tabs or host permissions needed! 
    console.log("★ tab.url", tab.url); 
}); 

您可以通過改變make_page_red例如清單文件,添加一個默認彈出這樣的檢查:

 
{ 
    "name": "Page Redder", 
    "description": "Make the current page red", 
    "version": "2.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 
    "browser_action": { 
    "default_title": "Make this page red", 
    "default_popup": "popup.html" ←------------------- 

    }, 
    "manifest_version": 2 
} 

現在,因爲我有一個默認彈出的browserAction.onClicked聽衆不再被稱爲。

如何獲取當前標籤網址並仍然彈出了我的窗口?

感謝

+0

你可以顯示你已經(manifest和popup.html)嗎?我已得到activeTab與瀏覽器操作在http://stackoverflow.com/a/22057017/2336725 – Teepeemm

+0

@Teepeemm我試着用你的答案,但標籤對象沒有url屬性 – redochka

+0

我相信popup.html意味着browserAction.onClicked不被調用。也許有popup.hmlt只是直接得到標籤網址?你可以發佈更多你已經有的東西嗎? – Teepeemm

回答

6

browserAction.onClicked不再被稱爲(正如你指出),所以只跳過:

popup.js

chrome.tabs.query({active:true,currentWindow:true},function(tabArray){ 
    console.log(tabArray[0].url); 
}); 

和當然,有popup.html負載popup.js與一個script標籤。 (我不知道你是什麼背景腳本正在做什麼。)

編輯:

除了上面,我擴展了其他兩個文件。 manifest.json已從您的複製,但已刪除背景部分。唯一的其他文件popup.html(從內存中,所以多多包涵):

<html><body><script type="text/javascript" src="popup.js"></script></body></html> 

要查看控制檯,我點擊瀏覽器操作,這帶來了一個50像素的正方形窗口。右鍵單擊,「檢查元素」,然後點擊控制檯查看網址。

+2

我正在使用make_page_red示例。你的代碼不起作用。它返回undefined。爲什麼你仍然不確定background.js?它沒有做任何可笑的事情。 – redochka

+0

我已經更新了我的答案。我詢問了後臺腳本,因爲當我複製你的清單時,chrome抱怨說它找不到腳本。我已經得到這個工作。如果你不能,那麼(第三次)你可以發佈你有什麼(一切)? – Teepeemm

+0

你運行的是什麼版本的chrome? – redochka

相關問題