这是因为您将脚本包装在 head 和语句中。
document.getElementsByTagName("body")[0]
返回 undefined 并且您的脚本会中断,因此不会执行任何事件处理程序附件代码。
将它们包装在 window.onload 或准备好文档中,它会正常工作。
演示
由于脚本在执行时被包裹在头部,因此文档尚未加载,因此无法找到将处理程序绑定到的元素。如果未找到元素, jquery 将不会返回undefined
,因此它不会破坏脚本,如果未找到元素,则原生 js 元素的文档函数返回 undefined。只有在 DOM 元素中不需要出现或出现在元素之后的东西才可用,甚至在文档准备好之前就可用。document.ready
document
$(function () { //document.ready
$(window).on("mousemove", function () {
console.log("window mousemove listener invoked");
});
$(document).on("mousemove", function () {
console.log("document mousemove listener invoked");
});
$(document.documentElement).on("mousemove", function () {
console.log("document.documentElement mousemove listener invoked");
});
$(document.body).on("mousemove", function () {
console.log("document.body mousemove listener invoked");
});
$("body").on("mousemove", function () {
console.log("$('body') mousemove listener invoked");
});
$("#foo").on("mousemove", function () {
console.log("$('#foo') mousemove listener invoked");
});
$("#foo").mousemove(function () {
console.log("$('#foo') mousemove listener invoked");
});
document.getElementsByTagName("body")[0].onmousemove = function () {
console.log("DOM level 0 body mousemove listener invoked");
};
document.getElementById("foo").onmousemove = function () {
console.log("DOM level 0 foo mousemove listener invoked");
};
});