2017-03-10 101 views
0

在我的Chrome擴展程序中,我想獲取當前標籤網址。在我的angular2組件中,我創建了字符串變量來保存URL。然後,我這樣做:無法獲取標籤網址

ngOnInit() { 
    chrome.tabs.getCurrent(function(tab){ 
     this.currentUrl = tab.url; 
    }); 
    console.log(this.currentUrl); 
} 

在控制檯中我得到的消息未定義。所以問題是我如何將Chrome擴展功能結果分配給我的TypeScript變量?

+0

@vanloc我創建的Chrome擴展程序,以便window.location的只是返回我「鉻擴展:// ... 「 –

+0

對。你的情況不正確。我刪除了該評論。 – vanloc

回答

0

chrome.tabs.getSelected()方法現在已被棄用。

獲取當前選項卡的URL的推薦方式是使用chrome.tabs.query()

使用示例:

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

這就需要你請求訪問chrome.tabs API在extension manifest

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

需要注意的是你的「當前標籤」的定義是非常重要的可能會因您的分機的需求而有所不同。

查詢中的設置lastFocusedWindow: true適合於當您要訪問用戶關注的窗口(通常是最上面的窗口)中的當前選項卡時。

設置currentWindow: true允許您獲取當前正在執行擴展代碼的窗口中的當前選項卡。例如,如果您的擴展程序創建一個新的窗口/彈出窗口(更改焦點),但仍希望從運行擴展的窗口訪問選項卡信息,這可能會很有用。

我在這個例子中選擇使用lastFocusedWindow: true,因爲Google調用了currentWindowmay not always be present的情況。

你可以自由地進一步細化使用任何這裏定義的屬性的標籤查詢:chrome.tabs.query

+0

我已經在我的清單文件中添加了權限,但它仍然沒有運氣... –

+0

如果我在chrome.tabs.query函數中添加console.log(),則會打印出url,但函數結束後將變爲undefined .. –

+0

如果url爲'undefined',請嘗試從chrome:// extensions重新加載您的擴展程序。這將重新加載擴展的配置並應用新添加的「標籤」權限。 – vanloc