2009-04-03 6 views
0

Donc je suis en train de coder un script Greasemonkey pour ce site .. De toute façon, mon problème est que je ne peux pas attacher l'événement onclick dans mon nouvel ancre créée.Je veux attacher un événement à un lien dynamiquement .. Mais l'attachement onclick n'a pas fonctionné

Je ne sais pas ce qui ne va pas, peut-être parce que je suis dans Greasemonkey c'est pourquoi ça n'a pas fonctionné comme prévu?

function createButton() { 
    var a = document.createElement('a'); 
    var css = document.createElement('style'); 
    css.type = 'text/css'; 
    css.innerHTML = '#prt { position:absolute; right:3em; top: 6em; font-family: Arial,Helvetica,sans-serif; font-weight:bold; font-size:125%; background: #777777 none repeat scroll 0 0; color: white; padding: 6px 12px;}' 
    a.href = '#'; 
    a.innerHTML = 'Print Topic'; 
    a.id = 'prt'; 
    a.onclick = getTopic; // DOESN'T WORK 
    document.body.insertBefore(a, document.body.lastChild); 
    document.body.appendChild(css); 
} 

J'ai essayé l'autre technique comme setAttribute

a.setAttribute('onclick', function() { alert("hey"); }); 

setAttribute aussi ne fonctionne pas ..

Comment venir ??

Hé les gars,

Je l'ai fait fonctionner. Quelqu'un m'a aidé sur l'IRC#greasemonkey .. Merci broquaint !! Donc le problème de l'utilisation de setAttribute ou la propriété .onclick de l'élément est greasemonkey ne les supporte pas à la place, il retournera l'erreur "Component not available" dans la console JavaScript.

Si vous avez rencontré ce problème avant vous devez utiliser

element.addEventListener ('click', myClickHandler, false); 

Voici le Wiki: http://wiki.greasespot.net/XPCNativeWrapper#Event_Handlers

Répondre

2

Utilisez la méthode attachEvent de l'ancre -

a.attachEvent(getTopic)

Edition - attachEvent est IE seulement. Pour Firefox, vous devrez utiliser addEventListener -

a.addEventListener(getTopic)

1

Essayez d'envelopper dans une fonction anonyme

a.onclick = function(){ 
    getTopic(); 
} 
+0

Merci .. Mais le bouton ne montrent pas après emballage cette fonction. – rymn

Questions connexes