【ie浏览器兼容性】 IE8- 浏览器document.documentElement.scrollLeft获取的值一直为0

问题描述如题目。

代码如下:

##html header
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <title>大主宰官方网站——正版授权 经典回合制游戏——晨游科技</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="renderer" content="webkit">


##js
    function setPosition(){
        var scroll_Left = 0;
        console.log(window.top.document.compatMode); //CSS1Compat
        var scroll_Left = window.pageXOffset || document.documentElement.scrollLeft 
                        || document.body.scrollLeft
                        || 0;

        console.log(scroll_Left); //这里不管怎么scroll打印出来的一直为0
        $(".header").css('left',~scroll_Left + 1);
    }

clipboard.png

问题已解决:ie8-浏览器和标准浏览器之间scroll事件有差别,标准浏览器对document监控scroll事件是可以的,但是ie8-浏览器下对document监控scroll事件则不会触发,解决方法就是统一对window进行监控scroll事件

阅读 7.4k
2 个回答

问题已解决:ie8-浏览器和标准浏览器之间scroll事件有差别,标准浏览器对document监控scroll事件是可以的,但是ie8-浏览器下对document监控scroll事件则不会触发,解决方法就是统一对window进行监控scroll事件

有两个问题:
1、要这样写:

 var ds = document.body.scrollLeft || document.documentElement.scrollLeft;
    console.log(ds);

2、上面获取的只是【静态的值】,也就是说如果你的滚动条一开始停在0,那么获取到的也只能是0,你要拉动滚动条再刷新页面,才能获得新的scrollLeft值,所以要实时获取要写在滚动事件里:

   window.onscroll = function() {
    var ds = document.body.scrollLeft || document.documentElement.scrollLeft;
    console.log(ds);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题