[英]Firefox WebExtensions tabs API how to get URL being loaded
我正在嘗試使用WebExtensions選項卡API獲取當前的選項卡URL。
我正在使用以下方法查詢選項卡:
// Get the current window's active tab.
browser.tabs.query({ currentWindow: true, active: true }, function(tabs) {
if (tabs[0].status == 'loading') {
// The user is currently loading a new page.
} else {
// The user is not loading a page.
}
});
如果在運行選項卡查詢時用戶正在加載頁面,則tabs[0]
對象如下所示:
{
"id": 114,
"index": 102,
"windowId": 3,
"selected": true,
"highlighted": true,
"active": true,
"pinned": false,
"status": "loading",
"incognito": false,
"width": 1278,
"height": 987,
"audible": false,
"mutedInfo": {
"muted": false
},
"url": "http://example.com/",
"title": "Example Domain",
"favIconUrl": "http://example.com/favicon.ico"
}
您可以看到"status"
設置為"loading"
。 這意味着頁面加載完成后, "url"
可能會更改。
無論如何,是否知道用戶正在加載哪個頁面?
在Firefox 54中測試。
可以從webNavigation
event中進行導航。 您很可能只希望查看具有frameId:0
事件。 webNavigation.onBeforeNavigate
事件具有新URL的最早通知。 但是,您還需要收聽onHistoryStateUpdated
和onReferenceFragmentUpdated
。
可通過tabs.onUpdated
事件獲得對選項卡顯示的URL的更新。 對於聽起來像您想要的東西,通知您顯示的URL已更改,這很可能是您想要收聽的內容。
通過將內容腳本插入選項卡並檢測將導致導航的用戶操作,可以獲得有關頁面將被導航的信息(即在導航開始之前)。 這不會檢測所有可能的導航源。 除非您需要這樣做,否則應避免使用它,因為它會占用更多資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.