滚动(scroll)事件 – 学习画板

首页 » JavaScript » 滚动(scroll)事件

滚动(scroll)事件

虽然scroll事件在window对象上发生的,但它实际表示的则是页面中相应元素的变化。在混杂模式下,可以通过body元素的scrollLeft和scrollTop来监控到这一变化;而在标准模式下,除Safari之外的所有浏览器都会通过html元素来反映这一变化(Sfari仍然基于body跟踪滚动位置),如下面例子所示:

var EventUtil = {
    addHandler: function (element, type, handler) {
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    }
};
EventUtil.addHandler(window, "scroll", function () {
    if (document.compatMode == "CSS1Compat") {
        alert(document.documentElement.scrollTop);
    } else {
        alert(document.body.scrollTop);
    }
})

以上代码指定的事件处理程序会输出页面的垂直滚动位置——根据呈现模式不同使用了不同的元素。由于Safari 3.1之前的版本不支持document.compatMode,因此就版本的浏览器就会满足第二个条件。

与resize事件类似,scroll事件也会在文档被滚动期间重复被触发,所以有必要尽量保持事件处理程序的代码简单。

此文章发表在 JavaScript 标签为 . 将固定链接加入收藏.