2015-06-24 1 views
6

Also ich versuche, ein Skript von externer Quelle wie www.script.google.com in auszuführen Hintergrund.js. Aber ich habe diesen Fehler -chrome.tabs.executeScript thows Fehler "Unchecked runtime.lastError beim Ausführen von tabs.executeScript: Kann nicht auf Inhalte von URL zugreifen ..."

Unchecked runtime.lastError while running tabs.executeScript: Cannot access contents of url "chrome-devtools://devtools/bundled/devtools.html?&remoteBase=https://chrome…&dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)". Extension manifest must request permission to access this host. 

Was ich tue von popup.js sendet Nachricht In popup.js background.js -

chrome.runtime.sendMessage({type:"addtask"}); 

In background.js -

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){ 
    if(request.type == "addtask") 
    { 
     chrome.tabs.executeScript(null, 
         {file:"https://script.google.com/url of script....."}); 
    } 
}); 

Mein manifest.json-

{ 
    "name": "Extension", 
    "version": "0.0.1", 
    "manifest_version": 2, 
    "browser_action": { 
     "default_popup": "popup.html" 
    }, 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    }, 
    "content_scripts": [{ 
     "js": ["jquery.min.js","contentscript.js"], 
     "matches": ["http://*/*","https://*/*"], 
     "css" : ["feedback.css"] 
    }], 
    "permissions": [ 
      "storage","tabs","https://script.google.com" 
     ], 
    "web_accessible_resources": ["feedback.js","html2canvas.js","event.js"], 
    "content_security_policy": "script-src 'self' https://script.google.com/*; object-src 'self'" 
} 
+1

entsprechenden Code enthalten, der diesen Fehler auslöst. – Xan

+0

@Xan Ich habe den Code hinzugefügt. – Sid

+0

Ihre Absicht ist nicht 100% klar. Versuchen Sie, das externe Skript als Inhaltsskript oder als Hintergrundskript auszuführen? – Xan

Antwort

6

Ebene und gerade. Fügen Sie *://*/* zu Berechtigungen hinzu.

+1

Das ist unglaublich. Nach stundenlanger Recherche fand ich heraus, dass meine Erlaubnis falsch war: das nachgestellte Sternchen-Symbol fehlte, so dass es nur Homepages gab. Der letzte Chrome-Fehler war etwas irreführend, da er die URLs zensierte, auf die ich mit "data: text/html, chromewebdata" zugreifen wollte. – Anonymous

0

Während der ArtPip-Vorschlag in diesem Fall funktioniert, möchten Sie häufig ein Skript auf einer Registerkarte oder allen Registerkarten ausführen und den Fehler korrekt behandeln, wenn Ihre Berechtigungen die Injektion auf dieser Registerkarte oder einigen Registerkarten nicht zulassen. Hier

ist ein Beispiel für ein Skript ausgeführt wird auf allen Registerkarten und korrekt Handhabungsfehler:

tabs.forEach(tab => { 
    chrome.tabs.executeScript(tab.id, { file: filename }, result => { 
     const lastErr = chrome.runtime.lastError; 
     if (lastErr) console.log('tab: ' + tab.id + ' lastError: ' + JSON.stringify(lastErr)); 
    }); 
}); 
Verwandte Themen