Javascript: onclick / onsubmit pour le bouton créé dynamiquement

Je crée dynamiquement un bouton de la manière que j'ai trouvée sur Internet:

Page = function(...) { ... }; Page.prototype = { ... addButton : function() { var b = content.document.createElement('button'); b.onclick = function() { alert('OnClick'); } }, ... }; 

Malheureusement, cela ne fonctionne pas et lance l'erreur suivante:

  Error: [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: chrome://knowledgizer/content /knowledgizer.js :: <TOP_LEVEL> :: line 137" data: no] Source File: chrome://browser/content/tabbrowser.xml Line: 434 

La solution avec setAttribute fonctionne:

 b.setAttribute("onClick", "alert('OnClick')"); 

Cependant, je veux appeler une méthode de classe (au lieu d'une alerte), et la syntaxe b.onclick semble meilleure à cet égard, j'espère / pense. Est-ce que c'est un casse-tête intuitif? Parce que si j'écris

 b.onClick = function() {alert("OnClick");} // notice the spelling onclick vs onClick 

Je n'obtiens pas l'erreur ci-dessus, mais ça ne fonctionne toujours pas, c'est-à-dire que je ne reçois pas l'alerte. Je suis reconnaissant pour tous les conseils.

En tant que question bonus: Comment puis-je éviter que la page actuelle ne soit rechargée lorsque le bouton est cliqué? J'aime juste appeler une méthode et ne pas provoquer de rechargement de page.

Merci et meilleures salutations,

Christian

     var foo = function(){ var button = document.createElement('button'); button.innerHTML = 'click me'; button.onclick = function(){ alert('here be dragons');return false; }; // where do we want to have the button to appear? // you can append it to another element just by doing something like // document.getElementById('foobutton').appendChild(button); document.body.appendChild(button); };