正确绑定javascript事件
我正在寻找绑定javascript事件的最合适、最有效的方法;特别是onload事件(我希望事件发生在页面和所有元素(如图像)加载之后)。我知道在jQuery中有一些简单的方法可以做到这一点,但我希望使用效率更高的原始javascript方法。有两种不同的方法。只有一个会起作用;哪一个取决于浏览器。下面是一个实用方法,它同时使用以下两种方法:正确绑定javascript事件,javascript,javascript-events,Javascript,Javascript Events,我正在寻找绑定javascript事件的最合适、最有效的方法;特别是onload事件(我希望事件发生在页面和所有元素(如图像)加载之后)。我知道在jQuery中有一些简单的方法可以做到这一点,但我希望使用效率更高的原始javascript方法。有两种不同的方法。只有一个会起作用;哪一个取决于浏览器。下面是一个实用方法,它同时使用以下两种方法: window.onload = function() { // ... }; function bindEvent(element, type,
window.onload = function() {
// ...
};
function bindEvent(element, type, handler) {
if(element.addEventListener) {
element.addEventListener(type, handler, false);
} else {
element.attachEvent('on'+type, handler);
}
}
就你而言:
bindEvent(window, 'load', function() {
// all elements such as images are loaded here
});
我知道你只问过如何绑定事件。但好家伙,乐趣还不止于此。要获得正确的跨浏览器,不仅仅是初始绑定,还有很多事情要做 @d、 对于要查找的
window
的load
事件的特定情况,的答案就足够了。但它可能会让代码的新手读者产生一种错误的感觉,即“做对了”。仅仅因为你绑定了事件并不意味着你注意到了它的正常化。您最好只修复窗口。onload
:
window.onload = (function(onload) {
return function(event) {
onload && onload(event);
// now do your thing here
}
}(window.onload))
但是对于事件绑定的一般情况,@d.的答案远远不能令人满意,甚至令人沮丧。它唯一正确的做法是使用特征检测,而不是浏览器检测
我不想在这里说太多,但是JavaScript事件绑定可能是使用JavaScript库的首要原因。我不管是哪一个,其他人已经一次又一次地解决了这个问题。以下是在处理程序函数中使用自制实现时的问题:
- 如何获取
对象本身事件
- 如何防止事件的默认操作(例如单击链接但不导航)
- 为什么
始终指向此
对象窗口
- (重新鼠标事件)事件的x/y坐标是什么
- 哪个鼠标按钮触发了事件
- 是按Ctrl键还是按常规键
- 事件实际上是在什么元素上触发的
- 这项活动将涉及哪些要素?(即
,表示relatedTarget
)blur
- 如何通过其父DOM取消事件的冒泡
- (重新事件冒泡)现在实际接收事件的元素是什么?(即当前目标)
- 为什么我不能从这个
事件中获取异常的字符代码keydown
- 当我添加所有这些事件处理程序时,为什么我的页面会泄漏内存??啊李>
- 为什么我不能解除我先前绑定的匿名函数的绑定
window.onload = (function(onload) {
return function(event) {
onload && onload(event);
$(".loading-overlay .spinner").fadeOut(300),
$(".loading-overlay").fadeOut(300);
$("body").css({
overflow: "auto",
height: "auto",
position: "relative"
})
}
}(window.onload));
非常感谢你。非常彻底,正是我要找的@杰基:乐趣还不止于此。请看我的答案。事件本身是一种依赖关系,在很大程度上可以通过理解DOM来避免。DOM以从上到下的方式加载;越靠近文档顶部的项目加载越早,而越靠近文档末尾的项目加载越晚。通过在文档末尾加载具有DOM依赖关系的脚本,这些问题中的许多都可以在没有任何事件绑定的情况下得到缓解。保持简单。@KingRider:哪个浏览器和版本?@DavidHedlund win 10 to Internet Explorer的最新版本有些情况下,加载库或框架是不切实际的,并且由于各种原因(早期加载与晚期加载,js对于“简单功能”的膨胀,…)而过度使用。