好吧,这里的人们是我令人惊叹的反重力图书馆。我试图将其定义为对象文字,呃,我读到了所有很酷的 child 正在做的事情,以便封装他们的库。基本测试表明它工作正常,但我似乎无法从对象内部看到 document.body。
应该发生的是,当我单击页面“正在运行”时应该发出警报。相反,我收到了 document.body=null 错误。是什么赋予了?我的 body 在哪里?为什么我不能为其设置鼠标事件?我整个周五都浪费在这上面了!嘎!
antigrav={
activate:function(){
// turn on antigrav
document.body.onmousedown = antigrav.startPan();
},
startPan:function(event){
alert('it is working!');
},
}
document.onload=antigrav.activate();
最佳答案
你可能想做
document.onload=antigrav.activate;
使用括号,您将 document.onload
设置为运行 antigrav.activate() 的结果,而不是表明您希望 antigrav.activate 作为文档运行.onload 处理程序。因此,在加载文档之前,会运行 activate() 来进行分配,因此 document.body 尚未定义。
您可能希望对 onmousedown 处理程序分配执行相同的操作:
document.body.onmousedown = antigrav.startPan;
尝试这个,我还必须切换到 window.onload...
此外,请注意对象文字定义中的尾随逗号。 Firefox 还可以,但 IE 就不行了。所以,总的来说:
var antigrav={
activate:function(){
// turn on antigrav
document.body.onmousedown = antigrav.startPan;
},
startPan:function(event){
alert('it is working!');
}
};
window.onload=antigrav.activate;
关于javascript - 对象文字 + document.body.onclick 没有按照我的预期进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452825/