设置scrollTop跨浏览器
set scrollTop cross browser
我在跨浏览器设置scrollTop时遇到问题。我做了一个搜索,说使用下面的解决方案。
我目前有:
var body = document.documentElement || document.body;
body.scrollTop = 200;
这适用于IE,而不是chrome
如果我把它转过来:
var body = document.body || document.documentElement;
body.scrollTop = 200;
它在chrome中工作,而不是IE
如何解决这个问题?
这方面存在一些互操作性问题和不兼容性。为了避免用户代理嗅探(并便于迁移到标准的API,其中document.documentElement.scrollTop
控制视口,而不是document.body.scrollTop
),在现代浏览器中实现了一种新的API。基本上,有一个滚动功能可以做到这一点-
function scrollViewport(top, left)
{
var eViewport = document.scrollingElement
if (eViewport)
{
if (typeof top !== "undefined")
{
eViewport.scrollTop = top;
}
if (typeof left !== "undefined")
{
eViewport.scrollLeft = left;
}
}
else
{
// Do your current checks or set the scrollLeft and scrollTop
// properties of both of documentElement and body, or user agent
// sniffing, if you must.
// Example -
// var scrollTop = 200;
// Chrome, Internet Explorer and Firefox, I think.
// document.documentElement.scrollTop = scrollTop;
// Safari, at least up to version 11, I think.
// document.body.scrollTop = scrollTop;
// Or just (I am not sure I recommend this)...
// window.scrollTo(0, scrollTop);
}
}
阅读Opera文章了解更多信息。
使用
var body = document.documentElement;
body.scrollTop = 200;
它应该是跨浏览器的,除非你做错了什么,比如丢失了html标签或类似的东西。
参考
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 滚动位置 (scrollTop) 硬件是否在浏览器中加速
- 使jQuery scrollTop不离开浏览器历史记录
- 跨浏览器 jquery animate scrollTop.
- 移动浏览器上的 scrollTop() 滞后/滚动分辨率问题
- scrollTop给了我跨浏览器的问题
- jQuery/Javascript:所有浏览器中的scrollTop值
- offsetParent.scrollTop在大多数浏览器中不起作用
- 当明确设置scrollTop时,无限滚动在iOS webkit浏览器上闪烁
- 浏览器滚动事件是否可能由DOM操作(而不是用户操作或显式调用)触发?.ScrollTop美元)
- 我的scrollTop() jQuery方法一旦滚动就挂起浏览器
- 设置scrollTop跨浏览器