2009-11-11 16 views
7

Cuando escribo un script de Greasemonkey, si creo un div y establecer onclick para alertar funciona:Greasemonkey onclick vinculante

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

Sin embargo, si te pido que hacer otra cosa que se definió antes de lo falla:

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

¿hay alguna manera de enlazar una función al evento onclick de un div?

+0

PS. La función a la que quiero llamar también llama a otras funciones. – KalEl

Respuesta

10

Su problema es que, como está identificando el atributo en una cadena, está evaluando la cadena en el contexto de la página, que no tiene una función graphIt.

debe llamar al método addEventListener, así:

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

solución perfecta. – kitokid

+0

¿Esto todavía funciona? Lo he intentado y el botón se hace clic automáticamente cuando se carga la página ... – geekscrap

+0

@geekscrap: Probablemente haya llamado a la función en lugar de pasarla. – SLaks