我按照我在互联网上找到的方式动态创建一个按钮:
Page = function(...) { ... }; Page.prototype = { ... addButton : function() { var b = content.document.createElement('button'); b.onclick = function() { alert('OnClick'); } },... };
不幸的是,它没有工作并抛出以下错误:
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
setAttribute的解决方案:
b.setAttribute("onClick","alert('OnClick')");
但是,我希望调用一个类方法(而不是alert),并且b.onclick语法在这方面看起来更好,我希望/想.这个onclick案件是否敏感?因为如果我写
b.onClick = function() {alert("OnClick");} // notice the spelling onclick vs onClick
我没有得到上面的错误,但它仍然没有工作,即我没有得到警报.我很感谢任何提示.
作为一个额外的问题:如何在单击按钮时避免重新加载当前页面?我只是想调用一个方法而不是导致页面重新加载.
谢谢和最好的问候,
基督教
解决方法
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); };