【问题标题】:Feature detection for position: fixed位置特征检测:固定
【发布时间】:2012-04-16 07:11:26
【问题描述】:
我正在尝试寻找一个脚本来检测设备是否将position: fixed 元素相对于 ViewPort 而不是整个文档放置。
目前,标准桌面浏览器和移动 Safari(适用于 iOS 5)这样做,而 Android 设备相对于整个文档放置固定元素。
我找到了几个测试来检测这一点,但似乎没有一个有效:
有人知道在哪里可以找到/如何编写实际检测到的测试吗?我不想依赖浏览器嗅探。
【问题讨论】:
标签:
javascript
mobile
feature-detection
【解决方案3】:
我创建了另一个检查器是否真的支持position:fixed。它创建固定的 div 并尝试滚动并检查 div 的位置是否发生了变化。
function isPositionFixedSupported(){
var el = jQuery("<div id='fixed_test' style='position:fixed;top:1px;width:1px;height:1px;'></div>");
el.appendTo("body");
var prevScrollTop = jQuery(document).scrollTop();
var expectedResult = 1+prevScrollTop;
var scrollChanged = false;
//simulate scrolling
if (prevScrollTop === 0) {
window.scrollTo(0, 1);
expectedResult = 2;
scrollChanged = true;
}
//check position of div
suppoorted = (el.offset().top === expectedResult);
if (scrollChanged) {
window.scrollTo(0, prevScrollTop);
}
el.remove();
return suppoorted;
}
此功能已在 Firefox 22、Chrome 28、IE 7-10、Android Browser 2.3 中测试。