2016-04-21 8 views
2

Auf das Skript Injektion von BefehlChrome-Erweiterung Injektion Skript erhalten Fehler

chrome.tabs.executeScript(
    null, {file: "dialog.js"}); 

werfen Fehler

Ungeprüfter runtime.lastError während tabs.executeScript ausgeführt wird: Kann nicht Inhalt der URL-Zugriff „Chrom-devtools://devtools/bundled/inspector.html? & remoteBase = https://chrom ... om/serve_file/@ 4fc366553993dd1524b47a280fed49d8ec28421e/& dockSide = undocked ". Das Erweiterungsmanifest muss die Berechtigung zum Zugriff auf diesen Host anfordern. bei onNativeMessage (Chrom-Erweiterung: //knldjmfmopnpolahpmmgbagdohdnhkik/background.js: 31: 5)

manifiest.json 
{ 
    "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaYhSpDCE9RPocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB", 
    "name": "TerminusProLink", 
    "version": "1.0", 
    "manifest_version": 2, 
    "description": "Link to ProLaw App", 
    "background": { 
    "scripts": [ "background.js", "background.html"] 
    }, 
    "content_scripts": [ 
    { 
     "all_frames": true, 
     "js": [ "jquery-1.5.1.js", "jquery-ui-1.8.11.js", "content.js" ], 
     "matches": [ "http://*/*", "https://*/*" ] 
    } 
    ], 

    "permissions": [ 
    "background", "tabs", "http://*/*", "https://*/*", 

    ] 
} 

Jede Lösung eines mit bitte vorschlagen.

+0

Btw können Sie diese fangen lasterror: https://stackoverflow.com/a/45603880/632951 – Pacerier

Antwort

2

Bitte setzen Sie explizit den Parameter von executeScript, welcher by default wäre der aktive Reiter des aktuellen Fensters.

Wenn Sie tabId nicht direkt erhalten konnten, verwenden Sie chrome.tabs.query, um den Tabstatus abzufragen.

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    for(var i = 0; i<tabs.length;i++) { 
     chrome.tabs.executeScript(tabs[i].id, {"file": "dialog.js"}); 
    } 
}); 

Und vergessen Sie nicht "web_accessible_resources": ["dialog.js"] in Ihrem hinzufügen manifest.json

+0

Danke, funktioniert es. Aber müssen Sie eine Nachricht an dialog.js übergeben. Wie übermittle ich eine Nachricht an die Methode dialog.js? –

+0

@VishwajeetBose, wenn Sie die Weitergabe von Parametern beim Aufruf von 'executeScript' meinen, schauen Sie sich http://StackOverflow.com/questions/17567624/pass-Parameter-using-executescript-chrome –

+0

an. Nach der Verwendung führen Sie dialog.js nicht einmal aus Code. chrome.tabs.executeScript (tabs [i] .id, {code: "var msg = 1;"}, funktion() { chrome.tabs.executeScript (tabs [i] .id, {"file": " dialog.js "}); }); } In dialog.js Funktion callCheck() { Debugger; var DialogBox = document.createElement ("div"); var TextPara = document.createElement ("p"); TextPara.innerHTML = "ss"; DialogBox.appendChild (TextPara); $ (DialogBox) .dialog ({ }); } Warnung (msg); callCheck(); –