2016-05-06 12 views
0

In meinem content_script.js für eine Chrome-Erweiterung ich arbeite ich haben:Aufruf des benutzerdefinierten Ereignisses content_script.js von jQuery?

document.addEventListener("funcDoRequest", function (params) 
{ 
    alert('From content_script'); 
}); 

In meiner index.html Web-Seite, wie ich diese funcDoRequest von jQuery nennen? Irgendwelche Beispiele? Ich muss auch detail.x-Parameter übergeben.

Ich kann es so ohne jQuery tun, aber ich will das nicht:

<script> 
    var event = new CustomEvent('funcDoRequest', { 'detail': { something: 'something' } }); 
    var go = function() { document.dispatchEvent(event); } 
</script> 
<a href="javascript:go();">Click me</a> 

Dank.

+0

_ „Ich kann es so ohne jQuery tun, aber ich möchte nicht, diese“ _ Ist Voraussetzung für die jQuery-Version von Javascript in Frage ersetzen? Was ist der Zweck der Verwendung von jQuery zur Ausführung von Aufgaben, die Sie derzeit ohne jQuery ausführen können? – guest271314

+0

Ich nahm an, dass jQuery eine elegantere Möglichkeit bieten würde, dasselbe zu tun. –

+0

Ja, es ist möglich mit jQuery. Nicht sicher, wie zu bestimmen ist oder für welche Kriterien es sich handelt, ist "eleganter" Ansatz als ein anderer Ansatz? Ist Voraussetzung für eine jQuery-Lösung? – guest271314

Antwort

0

Eine mögliche jQuery könnte äquivalente Ansatz .click() Ereignis bei <a> Element gesetzt, .on() mit "funcDoRequest" als benutzerdefinierte Ereignis verwendet wird; Aufruf .trigger() mit "funcDoRequest" als ersten Parameter, Datenobjekt { something: "something" } als zweiter Parameter bei Klick auf a Element; Auf das übergebene Datenobjekt kann unter .on("funcDoRequest") Handler als zweites Argument zugegriffen werden params. Außerdem wurde event.preventDefault() unter a Click-Handler hinzugefügt.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<script> 
 
    $(document).ready(function() { 
 
    var doc = $(this); // `document` 
 
    $("a").click(function(e) { 
 
     e.preventDefault(); 
 
     doc.trigger("funcDoRequest", { 
 
     "something": "something" 
 
     }) 
 
    }); 
 
    // at `content_script.js` 
 
    $(document).on("funcDoRequest", function(e, params) { 
 
     console.log(e, params); 
 
     alert(JSON.stringify(params)) 
 
    }); 
 
    }) 
 
</script> 
 
<a href="#">Click me</a>

+0

Danke, aber das scheint einfach nicht für mich zu arbeiten. –

+0

@KenWilliams Kannst du beschreiben" scheint nicht zu funktionieren "? Ist jQuery bei' Dokument' geladen?, Bei Content-Skript? – guest271314

+0

Es tut nur nichts. Nicht einmal ein Javascript-Konsolenfehler. JQuery lädt überall gut. Für mich sollte das funktionieren, sollte es nicht? '// index.html jQuery (" # clickme "). On (" klick ", funktion() { jQuery (Dokument) .trigger ('funcDoRequest'); }); Click me ' ' // content_script.js document.addEventListener ("funcDoRequest", Funktion (Intralaunch) { alert ('Hier in content_script'); }); ' Das ist dumm, ich kann nicht Fügen Sie sogar neue Zeilen hinzu. –

Verwandte Themen