2016-07-28 8 views
0

Want.htmlNachrichten können nicht von Seite zu Chrome Extension passieren

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 

</head> 
<body> 
    <button onclick="myFunction()">Copy Text</button> 
    <script> 
     function myFunction() { 
      alert("go"); 
      var id = "lmeobdocdijngimfmndbaljkejddkpbc" 
      chrome.runtime.sendMessage(id, { data: "Todo" }, 
       function(response){ 
        if(response == undefined){ 
         console.log("Message didnt cross site"); 
         console.log(chrome.runtime.lastError); 
         console.log(chrome.runtime.lastError.message); 
        } 
       } 

      )}; 
    </script> 
</body> 
</html> 

ich eine Chrom extention gemacht und möchte eine Nachricht an meine Erweiterungen Hintergrund Skript schicken Sachen mit einem Klick auf eine Schaltfläche zu tun, wie gesehen. Die Erweiterung id markiert als id

Das ist mein background.js

chrome.runtime.onMessageExternal.addListener(
    function (request, sender, sendResponse) { 
     if (request.data === "Todo") { 
      alert("Listened");     
      sendResponse({ data: "money" }); 

     }); 

Hier ist meine manifest.json

{ 
    "manifest_version": 2, 

    "name": "E", 
    "description": "P", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "background": { 
    "scripts": [ "background.js" ] 
    }, 

    "permissions": [ 
    "*://*/*", 
    "cookies", 
    "activeTab", 
    "tabs", 
    "https://ajax.googleapis.com/", 

    ], 
    "externally_connectable": { 
     "matches": ["https://google.com/myindex/Want.html"] 
    } 
} 

Allerdings, wenn ich versuche, die eine Verbindung zu laufen, bekomme ich Message didn't cross site und der Fehler Object {message: "Could not establish connection. Receiving end does not exist."}

Jeder Hinweis, warum das funktioniert, wie ich anstrengend war Die Chrome Docs und alle sagen, das ist richtig.

+0

Sie erhalten offensichtlich eine Antwort, also muss es zu background.js kommen ... oder vielleicht nicht jetzt, dass ich Ihren Code wieder gelesen habe –

+0

@JaromandaX Ich dachte nicht so. Laut den Dokumenten ist der Rückruf wie folgt formatiert: _Das JSON-Antwortobjekt, das vom Handler der Nachricht gesendet wird. Wenn bei der Verbindung mit der Erweiterung ein Fehler auftritt, wird der Callback ohne Argumente und runtime.lastError wird auf die Fehlermeldung gesetzt. – Stevie

Antwort

1

Die Ursache ist die folgende Zeile ein:

"externally_connectable": { 
    "matches": ["https://google.com/myindex/Want.html"] 
} 

"https://google.com/myindex/Want.html" keine gültige URL übereinstimmen, sollten Sie so etwas wie https://*.google.com/myindex/Want.html oder *://*.google.com/myindex/Want.html verwenden, wenn Sie sicher sind, dass Want.html unter Google-Host ist.

+0

Sorry, aber ich habe die Zeile geändert, weil ich an meinen eigenen Web-Service angeschlossen bin. speziell 'https: // Stevie.dmnnt.msft/myindex/Want.html'. Ich habe jedoch versucht, es in '*: // *. Dmnnt.msft/myindex/Want.html' zu ändern – Stevie

0

Eine Lösung gefunden. Das Problem ist stattdessen all dies, es ist besser, nur irgendetwas anzugeben, das von einer Domäne kommt. *//Stevie.dmnnt.msft/* gearbeitet.