2010-05-09 52 views
30

基本上在我的窗口中(當您單擊圖標時)它應該打開並顯示選項卡的URL並在它旁邊我想要它說「保存」,它會將其保存到localStorage並顯示下面進入保存的鏈接區域。獲取URL,並將其保存| Chrome擴展程序

像這樣:

alt text http://i42.tinypic.com/dma7x5.png

喜歡的東西書籤:)

+1

注意:這裏的所有答案都建議使用'chrome.tabs.getSelected'。這個API方法已被廢棄,但你必須使用'chrome.tabs.query'而不是 - 請參閱[如何獲取當前打開的標籤的URL在我的頁面動作彈出?](http://stackoverflow.com/questions/10413911 /如何獲取當前打開的標籤頁在我的網頁動作彈出/ 10417327#10417327) – 2012-08-29 09:56:14

回答

48

如果你想要做這樣的事情,你很容易做到這一點與Chrome擴展API。需要關注的領域是:

現在的第一步是創建popup.html文件,並記它是短暫的,那就是,當你點擊瀏覽器上的動作,只住,那麼如果它退出(關閉)死亡。我想說的是,如果你有很多計算,並且你希望它在後臺發生,並且即使彈出窗口關閉,也會將所有內容移動到background page。在彈出窗口中,您可以通過使用chrome.extension.getBackgroundPage()

輕鬆訪問背景頁面在popup.html中,您需要獲取當前選項卡的URL,這樣做,Tab API具有「getSelected」功能,可讓您獲取所選標籤的Tab object

因此,像這樣:

popup.html

<html> 
<body> 
<p id="currentLink">Loading ...</p> 
<hr /> 
<ul id="savedLinks"></ul> 
<script type="text/javascript" src="popup.js"></script> 
</body> 
</html> 

彈出。JS

chrome.tabs.getSelected(null, function(tab) { 
    document.getElementById('currentLink').innerHTML = tab.url; 
}); 

爲什麼你不能把JavaScript代碼的HTML文件的原因是Chrome的限制,以保護其的JavaScript攻擊,用戶的:

內嵌腳本和事件處理程序不允許

現在,您可以通過瀏覽器操作在當前頁面的彈出窗口中顯示Url。下一步是使用簡單的HTML5功能,例如localStorage或Webdatabase(在我看來這會更好)。要將保存的頁面存儲到,則可以將它們渲染到savedLinks頁面上,就像我爲currentLink所做的一樣。

祝你好運!

+0

非常有用的代碼開始,我會做的存儲,謝謝:) – Jamie 2010-05-09 15:09:01

+0

看看HTML5 web數據庫(對您的情況更好) – 2010-05-09 23:22:55

+4

上述腳本僅適用於在清單中設置了正確權限的情況:「權限」:[ 「選項卡」 ] – ina 2012-06-22 05:17:28

10

得到當前的URL,你需要獲得當前選項卡,然後提取所有paramenters。

獲取當前選項卡的使用,chrome.tabs.getSelected()。然後,獲取從標籤對象的參數,請參閱tabs api

您的代碼段應該是這樣的,

chrome.tabs.getSelected(null, function(tab) { 
    //properties of tab object 
    tabId = tab.id; 
    tabUrl = tab.url; 

    //rest of the save functionality. 
}); 

您還需要申報「標籤」權限在擴展的清單以使用選項卡API。例如

{ 
    "name": "My extension", 
    ... 
    "permissions": [ 
    "tabs" 
    ], 
    ... 
} 
13

我想更新此答案,因爲API已更改。

chrome.tabs.getSelected()方法現在已被棄用。獲取當前選項卡的URL的推薦方法是使用chrome.tabs.query()

chrome.tabs.query({'active': true}, function (tabs) { 
    var url = tabs[0].url; 
}); 

這仍需要您請求在您的擴展清單訪問chrome.tabs API:

"permissions": [ ... 
    "tabs" 
] 

你可以閱讀更多關於這裏的棄用:chrome.tabs.getSelected()

希望這有助於!