2009-11-11 5 views
7

Wenn ich ein Greasemonkey-Skript schreiben, wenn ich ein div und setzen Sie erstellen Onclick es zu alarmieren funktioniert:Greasemonkey Onclick Bindung

var btn = document.createElement('div'); btn.setAttribute('onclick',"alert('clicked!');");

Allerdings, wenn ich darum bitten, etwas anderes zu tun, die früher dann definiert wurde es scheitert:

function graphIt() {...}; var btn = document.createElement('div'); btn.setAttribute('onclick',"graphIt();");

gibt es eine Möglichkeit, eine Funktion für das Onclick-Ereignis eines div binden kann?

+0

PS. Die Funktion, die ich anrufen möchte, ruft auch einige andere Funktionen auf. – KalEl

Antwort

10

Ihr Problem ist, dass, da Sie das Attribut auf eine Zeichenfolge festlegen, es die Zeichenfolge im Kontext der Seite selbst auswertet, die keine graphIt Funktion hat.

Sie sollten die addEventListener Methode, wie folgt aufrufen:

function graphIt() {...}; var btn = document.createElement('div'); 
btn.addEventListener("click", graphIt, false); 
+0

perfekte Lösung. – kitokid

+0

Funktioniert das noch? Ich habe versucht und die Schaltfläche wird automatisch geklickt, wenn die Seite geladen wird ... – geekscrap

+0

@geekscrap: Sie haben wahrscheinlich die Funktion aufgerufen, anstatt sie zu übergeben. – SLaks