Javascript 为什么一个div和body没有';你没有得到mousemove事件吗?
我正在中注册Javascript 为什么一个div和body没有';你没有得到mousemove事件吗?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我正在中注册mousemove处理程序 正如在Chrome和Firefox上尝试的那样 守则的一部分是: $("body").on("mousemove", function () { console.log("$('body') mousemove listener invoked"); }); $("#foo").on("mousemove", function () { console.log("$('#foo') mousemove listener invoked")
mousemove
处理程序
正如在Chrome和Firefox上尝试的那样
守则的一部分是:
$("body").on("mousemove", function () {
console.log("$('body') mousemove listener invoked");
});
$("#foo").on("mousemove", function () {
console.log("$('#foo') mousemove listener invoked");
});
但由于某些原因,它们从未被调用,而是调用了
mousemove
的html
、document
和window
处理程序。我遗漏了什么吗?这是因为您将脚本包装在head和语句中
document.getElementsByTagName("body")[0]
返回未定义且脚本中断,因此除此之外不会执行任何事件处理程序附件代码
将它们包装在window.onload或document ready中,即可正常工作
由于脚本在执行时被包装在头中,文档尚未加载,因此无法找到要将处理程序绑定到的元素。如果找不到元素,jquery将不会返回undefined
,因此它不会破坏脚本,如果找不到元素,原生js元素的as document函数将返回undefined。唯一不需要在document.ready
中或DOM中元素之后出现的东西是document
,它甚至在文档准备好之前就可用
小提琴拉得很好。但始终将Js代码包含在document.onready函数中
$(function(){
< your Js code here >
});
$(函数(){
<你的Js代码在这里>
});
这是因为代码是在浏览器呈现元素之前读取的,因此在读取代码时,它无法绑定到甚至不存在的任何内容。因此,您的代码可能无法工作。通过将您的
控制台.log
语句更改为警报()
窗口变疯,它们都可以工作。这不是你的问题。*即使在小提琴中,也只有窗口和文档绑定在工作。。。很好的解释。一个次要的问题是,我没有看到Chrome的开发者工具中报告的错误,即对于未定义的,MouseMove
没有任何属性。如果,在加载页面之后,我故意键入document.getElementsByTagName(“foobarwahlah”)[0].onmousemove=function(){}
然后它会说TypeError:无法设置未定义的属性“onmousemove”
我看到Uncaught TypeError:无法设置未定义的属性“onmousemove”
但是您的问题可能是时间。如果将它们放在ready下或html中的元素之后(正文末尾)。这对你来说应该很好。@JeremyL,正如我说的,这是一个关于你的脚本在哪里的时间问题document.getElementsByTagName(“body”)[0]
在头中而不是在window.onload或document.ready中包装时也会抛出错误,前提是提供了时间。这就是理论,而且我在实践中大多是这样看的。
$(function(){
< your Js code here >
});