2013-02-15 100 views
2

我正在尝试使滚轮滚动页面水平。像Windows 8 metro界面和新的myspace网站。scrollLeft在Internet Explorer中不工作

我只是不能得到它在Internet Explorer(10)的工作。我的JSFiddle:http://jsfiddle.net/88dRJ/4/

我已经尝试删除溢出以使滚动条可见。微软在doScroll的文档中声明,它不能与隐藏的滚动条一起工作。我更喜欢隐藏的滚动条。

的Javascript

var mouseWheelEvt = function (e) { 
    var event = e || window.event; 
    if (document.body.doScroll) { 
     document.body.doScroll(event.wheelDelta > 0 ? "left" : "right"); 
    } else if ((event.wheelDelta || event.detail) > 0) { 
     document.body.scrollLeft -= event.wheelDelta || 120; 
    } else { 
     document.body.scrollLeft -= event.wheelDelta || -120; 
    } 
    return false; 
}; 
document.addEventListener("mousewheel", mouseWheelEvt); 
document.addEventListener("DOMMouseScroll", mouseWheelEvt); 

编辑:为了澄清,我宁愿没有的jQuery或其他libaries的解决方案。

+0

您是否已经尝试过'document.documentElement.scrollLeft - ='for IE? – 2013-02-15 16:26:51

+0

Woow非常感谢,确实是这个问题。所以很奇怪,我不认为IE10也不支持document.body.scrollLeft(你可以让它成为答案) – automaticoo 2013-02-15 16:31:30

+0

你可以检查这段代码,如果它在IE中工作http://jsfiddle.net/88dRJ/8/ is是的,我会将它包含在答案中。我没有IE浏览器,所以我不能测试自己 – 2013-02-15 16:35:41

回答

2

IE浏览器,你需要使用document.documentElement而不是document.body访问/修改scrollLeftscrollTop

document.documentElement.scrollLeft -= event.wheelDelta || 120;

+0

我只是调整它们以获得跨浏览器滚动。在铬和ie10工作 – automaticoo 2013-02-15 16:37:14

+2

@automaticoo我不会同时调整。因为如果例如MS认为它应该支持在IE浏览器的时间,你会得到一个“双”滚动距离。 – 2013-02-15 16:38:43