我想确定我有多少像素向下滚动使用window.scrollY
。 但是,这是不是在IE8的支持。 什么是安全的,跨浏览器的方法吗?
Answer 1:
对于跨浏览器兼容的版本window.scrollY
是document.documentElement.scrollTop
。 请看这块的“注意事项”一节Mozilla的文档在IE8和前一个完整,详细的解决办法。
如这里提到的 , pageYOffset
是另一种替代window.scrollY(但请注意,这仅仅是IE9 +兼容)。
至于上面的链接,查看例4的完全兼容的方式获得滚动位置(它甚至占变焦提到@adeneo!)使用document.documentElement.scrollTop
和document.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.pageYOffset
或document.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
}