2017-05-05 4 views
0

Ich beende gerade schreiben ein Alpha von einer Chrome-Erweiterung, die Japanisch von Wörterbuch Webseite analysieren und es als Flash-Karten präsentieren. Es ist eine einzelne js, die das DOM weitergibt und alle Arten von Daten parst.brauche Hilfe, um besser zu verstehen Chrome Erweiterung

Im Moment erstellt die Erweiterung ein Div-Element innerhalb der Webseite, um alle Daten zu speichern, und ich möchte es in ein Popup von meiner Erweiterung verschieben.

So füge ich ein Pop-up und klickte auf das Symbol

"browser_action": { 
"default_icon": "icon19.png", 
"default_title": "Tangorin extention is active", 
"popup": "popup.html" 

}

Es ist nichts passiert, so dass ich denke, es ist wahrscheinlich, weil ich ihm gesagt, eine bestimmte Seite auf meinem Eventhandler auf Klick zu öffnen, so Ich brauche etwas, das es sagt, um das Popup zu öffnen. Ich gucke nach und finde etwas, das eine Nachricht aufruft, um dich in deiner Nebenstelle zu verbinden.

Also folgte ich google Zunft und tat so etwas in meinem Eventhandler

chrome.browserAction.onClicked.addListener(function(activeTab) 
{ 
    var newURL = "http://tangorin.com/examples/"; 
    chrome.tabs.create({ url: newURL }); 
}); 

chrome.runtime.onMessageExternal.addListener(
    function(request, sender, sendResponse) { 
    console.log(sender.tab ? 
       "from a content script:" + sender.tab.url : 
       "from the extension"); 
    if (request.greeting == "hello") 
     console.log("message"); 
    }); 

Auch ich denke Seite eine Nachricht von einem Web genannt sendet, damit ich Berechtigungen und etwas hinzufügen, die es auf meinem Skript nennen .

"externally_connectable": { 
    "matches": ["*://*.tangorin.com/examples/*"] 
    } 

Und etwas, das es auf meinem Skript nennen wird.

function print_results() { 
    //bla bla 
    chrome.runtime.sendMessage({greeting: "hello"}); 
} 

Und es ist nichts passiert, chrome.runtime.sendMessage nicht die Funktion in dem Eventhandler auslösen.

Bin ich auf dem richtigen Weg? Oder gibt es einen besseren Weg, um das Popup zu öffnen? Ich weiß noch nicht viel über Extension Dev, aber ich habe es bis jetzt geschafft.

Vielen Dank im Voraus, Oder

bearbeitet: vielleicht stattdessen kann ich den Standard-Popup geöffnet, wenn der Benutzer auf einem Objekt, dass wie durch die Content-Skript erstellt worden?

+0

alles in der Developer Tools-Konsole, um ein Problem anzuzeigen? –

+0

Die Chrome-Erweiterung ist das zusätzliche Skript, das beim Laden einer Seite ausgeführt werden soll. Bevor Sie das Skript als Erweiterung ausführen, führen Sie es in der Chrom-Skriptleiste aus, um das Protokoll und Fehler zu sehen. – Vinayk93

+0

@ Vinayk93 das ganze Skript funktioniert außer den Nachrichtenteilen. –

Antwort

1
  1. Liste item
  2. Hintergrund Skript background.js erstellen.
  3. Fügen Sie in Ihrem minifet.json nächsten:

"background": { "scripts":["background.js"] }

  1. In Ihrem background.js Skript hinzufügen:

    chrome.runtime.onMessage.addListener(
         function(request, sender, sendResponse) { 
         if (request.greeting == "hello"){ 
          console.log("message"); 
          sendResponse({status:"Message delivered success!"}); 
         }   
    }); 
    
  2. Fügen Sie in Ihrem popup.html Skript main.js mit dem Code:

    hinzu
    function print_results() { 
         //bla bla 
         chrome.runtime.sendMessage({greeting: "hello"}); 
        } 
    

Und das https://developer.chrome.com/extensions/messaging für ein besseres Verständnis überprüfen. Ich hoffe, es hat geholfen.

+0

Danke, ich habe diesen Link für das Beispiel verwendet. Mein eventHandler ist im "minifet.json" "background" registriert: { "scripts": ["eventsHandler.js"], "persistent": false', und sieht nicht so aus, als ob die Nachricht etwas auslöst. –

+0

Auch popup.html ist noch nicht vorhanden, ich benutze js, das registriert ist, wenn ich auf die Website –

+0

trat, stattdessen kann ich das Standard - Popup öffnen, wenn der Benutzer auf –

Verwandte Themen