Sök…


Anmärkningar

Officiell dokumentation

Deklarerar innehållsskript i manifestet

Innehållsskript kan förklaras i manifest.json att alltid injiceras på sidor som matchar en uppsättning URL-mönster .

Minimalt exempel

"content_scripts" : [
  {
    "js": ["content.js"],
    "css": ["content.css"]
    "matches": ["http://example.com/*"]
  }
]

Den här manifestposten instruerar Chrome att injicera ett innehållsskript content.js , tillsammans med CSS-filen content.css , efter någon navigering till en sida som matchar matchningsmönstret http://example.com/*

Både js och css nycklar är valfria: du kan bara ha en av dem eller båda beroende på vad du behöver.

content_scripts nyckeln är en matris och du kan förklara flera innehållsskriptdefinitioner:

"content_scripts" : [
  {
    "js": ["content.js"],
    "matches": ["http://*.example.com/*"]
  },
  {
    "js": ["something_else.js"],
    "matches": ["http://*.example.org/*"]
  }
]

Observera att både js och matches är matriser, även om du bara har en post.

Fler alternativ finns i den officiella dokumentationen och andra exempel.

Viktig notering

Innehållsskript som deklarerats i manifestet kommer endast att injiceras vid nya navigeringar efter tilläggsbelastningen . De kommer inte att injiceras i befintliga flikar. Detta gäller även för tilläggsladdningar vid utveckling, och tilläggsuppdateringar efter utgåvan.

Om du måste se till att nu öppnade flikar täcks, överväg också att göra programmatisk injektion vid start.

Injicera innehållsskript från en tilläggssida

Om du istället för att alltid ha ett innehållsskript injicerat baserat på URL: n, du direkt vill kontrollera när ett innehållsskript injiceras, kan du använda Programmatic Injection .

Minimalt exempel

  • JavaScript

    chrome.tabs.executeScript({file: "content.js"});
    
  • CSS

    chrome.tabs.insertCSS({file: "content.css"});
    

Kallas från en förlängningssida (t.ex. bakgrund eller popup) och antar att du har behörighet att injicera, kommer detta att köra content.js eller infoga content.css som ett innehållsskript i den översta ramen på den aktuella fliken.

Inline-kod

Du kan köra inline-kod istället för en fil som ett innehållsskript:

var code = "console.log('This code will execute as a content script');";
chrome.tabs.executeScript({code: code});

Att välja fliken

Du kan ange ett flik-ID (vanligtvis från andra chrome.tabs metoder eller meddelanden) för att köra på en annan flik än den nuvarande aktiva.

chrome.tabs.executeScript({
  tabId: tabId,
  file: "content.js"
});

Fler alternativ finns i chrome.tabs.executeScript() och i andra exempel.

Behörigheter

Att använda chrome.tabs.executeScript() kräver inte "tabs" -tillstånd, men kräver värdbehörigheter för sidans URL.

Kontrollerar för fel

Om manusinjektion misslyckas kan man fånga den i valfritt återuppringning:

chrome.tabs.executeScript({file: "content.js"}, function() {
  if(chrome.runtime.lastError) {
    console.error("Script injection failed: " + chrome.runtime.lastError.message);
  }
});

Flera innehållsskript i manifestet

Samma villkor, flera skript

Om du behöver injicera flera filer där alla andra villkor är desamma, till exempel för att inkludera ett bibliotek, kan du lista alla dem i "js" :

"content_scripts" : [
  {
    "js": ["library.js", "content.js"],
    "matches": ["http://*.example.com/*"]
  }
]

Beställningsfrågor: library.js kommer att content.js innan content.js .

Samma skript, flera webbplatser

Om du behöver injicera samma filer på flera webbplatser kan du ange flera matchningsmönster:

"matches": ["http://example.com/*", "http://example.org/*"]

Om du behöver injicera i princip varje sida kan du använda breda matchningsmönster som "*://*/*" (matchar varje HTTP (S) -sida) eller "<all_urls>" (matchar varje sida som stöds ).

Olika skript eller olika webbplatser

"content_scripts" -avsnittet är också en matris, så man kan definiera mer än ett innehållsskriptblock:

"content_scripts" : [
  {
    "js": ["content.js"],
    "matches": ["http://*.example.com/*"]
  },
  {
    "js": ["something_else.js"],
    "matches": ["http://*.example.org/*"]
  }
]


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow