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

发布于 2022-09-04 10:36:04 字数 1083 浏览 15 评论 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事件

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

看轻我的陪伴 2022-09-11 10:36:04

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

我早已燃尽 2022-09-11 10:36:04

有两个问题:
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);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文