2015-09-29 31 views
1

我正在嘗試創建一個允許用戶保存其當前URL的chrome按鈕。稍後我會在登錄時將該URL發送到網站的數據庫,但這超出了我目前的任務。獲取當前URL並使用擴展名保存它

,我希望可以在此圖像中可以總結出功能:

screenshot

我發現這個問題,下面的URL請求,但對於Chrome擴展的規則已經改變,代碼不再起作用。 Get URL and save it | Chrome Extension

一個評論說:。 「作爲manifest_version 2,上面的代碼將無法正常工作的所有腳本應放置在一個單獨的文件&則包括它的主HTML新版本中明確指出,內嵌腳本和事件「

我無法弄清楚如何實現這個人的建議。

我到目前爲止有:

popup.hmtl

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

popup.js

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

清單:

{ 
    "name": "URL Saver", 
    "version": "1.1", 
    "description": "A browser action that saves the url of the current open tab", 
    "permissions": [ 
    "tabs" 
    ], 
    "browser_action": { 
     "default_title": "URL CATCHER", 
     "default_icon": "icon.png", 
     "default_popup": "popup.html" 
    }, 
    "manifest_version": 2, 
    "content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'" 
} 

現在,如果我按一下按鈕,我只是得到一個「正在加載... _______」的消息

+0

這個答案訪問它一直自該評論以來更新。它不再有與manifest_version 2的問題。 – Teepeemm

+2

我不完全理解你預期的代碼。爲什麼賦值給(local!)變量會改變頁面。 – Xan

+0

該功能無法在該圖像中進行歸納。請解釋你想要發生什麼以及什麼時候發生。 – Teepeemm

回答

1

您的Javascript實際上並不是正在做除了在變量url中存儲tabs [0] .url的值之外的任何東西。我懷疑你正在嘗試使用匿名函數範圍之外的變量「url」。這將不起作用,因爲您已經在回調中聲明瞭var。

您的下一個端口可能已經在回調之外聲明瞭url並在其中分配了該變量,但這也不起作用,因爲函數是異步。在你試圖訪問變量的時候意味着它沒有被設置。看到我回復給你的評論,詳細說明了這一點。

內,您的manifest.json中,請確保您提交的 '標籤' 權限如下

"permissions": [ 
    "tabs" 
], 

,您可以用

var getTab = function(tab){ 
    console.log(tab); 
}; 

chrome.tabs.query({currentWindow: true, active: true}, function (tabs){ 
    getTab(tabs[0]); 
}); 

Chrome Tabs API

+0

我已編輯帖子,幷包括我有什麼至今。它包含你的建議,但仍然無法正常工作。 – Rorschach

+1

嘗試編輯的代碼。 看看這個偉大的[發表](http://stackoverflow.com/questions/11688171/after-calling-chrome-tabs-query-the-results-are-not-available/11689804#11689804)解釋爲什麼你的代碼沒有工作。 – MeHaslam

+0

這可以使用activeTab權限來完成,但這與OP沒有解釋他們想要對URL執行什麼操作無關。 – Teepeemm