IE8替代window.scrollY?(IE8 alternative to window.scr

2019-09-04 04:16发布

我想确定我有多少像素向下滚动使用window.scrollY 。 但是,这是不是在IE8的支持。 什么是安全的,跨浏览器的方法吗?

Answer 1:

对于跨浏览器兼容的版本window.scrollYdocument.documentElement.scrollTop 。 请看这块的“注意事项”一节Mozilla的文档在IE8和前一个完整,详细的解决办法。

如这里提到的pageYOffset是另一种替代window.scrollY(但请注意,这仅仅是IE9 +兼容)。

至于上面的链接,查看例4的完全兼容的方式获得滚动位置(它甚至占变焦提到@adeneo!)使用document.documentElement.scrollTopdocument.documentElement.scrollLeft

在这里,尝试的例子为自己!



Answer 2:

如果你没有使用它了很多,只是做:

var scroll = window.scrollY //Modern Way (Chrome, Firefox) 
|| document.documentElement.scrollTop (Old IE, 6,7,8)


Answer 3:

如果你正在使用jQuery,我用$(窗口).scrollTop()来获得Y位置在IE 8,它似乎工作。



Answer 4:

如果你有不只是使用库来处理这种基本功能的有效理由,不要犹豫“不重新发明轮子”。

MooTools是开源的 ,并且你可以“窃取”它的实施,相关的片段:

getScroll: function(){
    var win = this.getWindow(), doc = getCompatElement(this);
    return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
}

function getCompatElement(element){
    var doc = element.getDocument();
    return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
}

这2是决定它具有兼容模式当前浏览器的核心,然后是使用window.pageYOffsetdocument.body.scrollTop基于该甚至document.html.scrollTop为真古马车浏览器。



Answer 5:

基于尼尔斯的答案,我想出了需要只是在Y坐标的时候稍微紧凑的解决方案:

function get_scroll_y() {
    return window.pageYOffset || document.body.scrollTop || document.html.scrollTop;
}


Answer 6:

基于Mozilla和上面的回答,我已经创建的以下功能更容易得到坐标:

var windowEl = (function () {
    var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");
    function scroll() {
        return { left: scrollLeft, top: scrollTop };
    };
    function scrollLeft() {
        return window.scrollX || window.pageXOffset || (isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft);
    };
    function scrollTop() {
        return window.scrollY || window.pageYOffset || (isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop);
    };
    return {
        scroll: scroll,
        scrollLeft: scrollLeft,
        scrollTop: scrollTop
    }
})();

根据Mozilla的文档 ,如上面引述的寿命,所述的pageXOffset属性是一个别名scrollX属性,所以stictly来说不是必要的。

安美居,用法是:

var scroll = windowEl.scroll();
// use scroll.left for the left scroll offset
// use scroll.top for the top scroll offset

var scrollLeft = windowEl.scrollLeft();
// the left scroll offset

var scrollTop = windowEl.scrollTop();
// the top scroll offset

经测试和在Chrome,Firefox,歌剧,EDGE(EDGE),IE(7-11),IE8适用于XP



Answer 7:

在角度,我们使用:

  var windowEl = angular.element($window);
  scrolldist = windowEl.scrollTop();


Answer 8:

window.scrollY&window.scrollX工作正常,所有现代的browers像器(Chrome,Firefox和Safari浏览器),但在IE浏览器不工作,所以修复使用window.pageXOffset或window.pageYOffset。

这是我写的,以修复IE问题的样本代码,这样的方案滚动在所有浏览器,包括IE浏览器的工作原理

if((window.scrollY || window.pageYOffset) >= 1100){
   //alert('Switch to land');
    $('#landTrst').trigger('click'); // your action goes here
}else if ((window.scrollY || window.pageYOffset) <= 900) {   
    //alert('Switch to Refernce Letter');
     $('#resLet').trigger('click'); // your action goes here
}                            


文章来源: IE8 alternative to window.scrollY?