簡體   English   中英

Firefox WebExtensions選項卡API如何獲取正在加載的URL

[英]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的最早通知。 但是,您還需要收聽onHistoryStateUpdatedonReferenceFragmentUpdated

可通過tabs.onUpdated事件獲得對選項卡顯示的URL的更新。 對於聽起來像您想要的東西,通知您顯示的URL已更改,這很可能是您想要收聽的內容。

通過將內容腳本插入選項卡並檢測將導致導航的用戶操作,可以獲得有關頁面將被導航的信息(即在導航開始之前)。 這不會檢測所有可能的導航源。 除非您要這樣做,否則應避免使用它,因為它會占用更多資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM