Chrome Extension: Make it run every page load

后端 未结 4 1764
抹茶落季
抹茶落季 2020-11-28 05:36

I want to make a chrome extension that executes some scripts after one page is loaded, I am not sure whether I have to implement this logic on the background page or it can

相关标签:
4条回答
  • 2020-11-28 05:48

    If it needs to run on the onload event of the page, meaning that the document and all its assets have loaded, this needs to be in a content script embedded in each page for which you wish to track onload.

    0 讨论(0)
  • 2020-11-28 05:53

    This code should do it:

    manifest.json

       {
          "name": "Alert 'hello world!' on page opening",
          "version": "1.0",
          "manifest_version": 2,
          "content_scripts": [
            {
              "matches": [
                "<all_urls>"
              ],
              "js": ["content.js"]
            }
          ]
        }
    

    content.js

    alert('Hello world!')
    
    0 讨论(0)
  • 2020-11-28 06:07

    You can put your script into a content-script, see

    • content-script
    0 讨论(0)
  • 2020-11-28 06:10

    From a background script you can listen to the chrome.tabs.onUpdated event and check the property changeInfo.status on the callback. It can be loading or complete. If it is complete, do the action.

    Example:

    chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
      if (changeInfo.status == 'complete') {
    
        // do your things
    
      }
    })
    

    Because this will probably trigger on every tab completion, you can also check if the tab is active on its homonymous attribute, like this:

    chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
      if (changeInfo.status == 'complete' && tab.active) {
    
        // do your things
    
      }
    })
    
    0 讨论(0)
提交回复
热议问题