移动Chrome和Safari之间的页面滚动不一致
page scrolling inconsistency between mobile Chrome and Safari
我的移动web应用程序的一个功能是将用户滚动到页面上的特定点。以下代码实现了这一点,但它仅适用于iPhone Safari。在Chrome浏览器/Android上,它会滚动到页面底部。为什么不一致?
请注意:我不想使用jQuery。
var $ = function(elID) {
return document.getElementById(el);
}
// Get info about target element's position and dimensions
var getRect = function(el) {
return el.getBoundingClientRect();
}
var scrollJump = function(){
var page = $('dPageContainer');
headerHeight = getRect($('dFixedHeader')).height;
return function(el){
// If a jQuery object, convert to raw DOM el
if ('get' in el) {
el = el.get(0);
}
var rect = getRect(el);
// Scroll the page to the element's position
page.scrollTop+= rect.top - rect.height - headerHeight;
}
};
var scrollToEl = scrollJump();
scrollToEl( $('my_DIV_ID') );
我能够通过简化和清理代码来解决这个问题。特别是,我使用了offsetTop
方法,而不是仅依赖于getBoundingClientRect
:
var $ = function(el) {
return document.getElementById(el);
}
var scrollJump = function(){
var page = $('dPageContainer'),
headerHeight = $('dFixedHeader').getBoundingClientRect().height;
return function(el){
// If a jQuery object, convert to raw DOM el
if ('get' in el) el = el.get(0);
// Scroll the page to the element's position
page.scrollTop = el.offsetTop - headerHeight;
}
};
var scrollToEl = scrollJump();
scrollToEl( $('my_DIV_ID') );
相关文章:
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Android和JavaScript解析API之间不一致
- 在浏览器之前滚动不可见的元素
- Javascript的行为与PHP包含文件不一致
- 对这种与document.domain和CORS相关的不一致行为的解释是什么
- 点击链接行为不一致
- 使用绝对位置时,jQuery向左滚动不起作用
- Passport.js`isAuthenticated()`不一致的行为;当它应该是真的时候是假的
- 与显示不一致
- jQuery 无限滚动不触发
- Ext 4.2.1 模型日期解析在浏览器之间不一致
- 通过 Dropbox API 上传时的文件内容不一致
- JavaScript - 对象属性不一致
- Javascript 混淆了 null、instanceof 和 typeof 的语法不一致
- 移动Chrome和Safari之间的页面滚动不一致
- JavaScript 滚动事件不一致
- jQuery在iPad或iPhone上捕获滚动事件与web浏览器不一致
- FF/IE中iframe的滚动宽度不一致
- textarea's滚动高度增加不一致的问题
- Ipad iOS不一致滚动:禁用主体滚动,但允许在某些元素上滚动