有没有可靠的方法来检测浏览器是否支持 position fixed
?
我找到了一些解决方案,但似乎没有一个能在所有浏览器上都很好地工作。
有没有可靠的方法来检测浏览器是否支持 position fixed
?
我找到了一些解决方案,但似乎没有一个能在所有浏览器上都很好地工作。
position: fixed
,并通过以下方法检查支持的属性:function isPositionFixedSupported() {
return $( '[data-role="header"]' ).css( 'position' ) === 'fixed';
}
static
。这段代码运行得非常好。在一个安装了IE6的Windows ME盒子上进行了测试,返回了“null”,因为IE6不支持 position:fixed;
。
顺便说一下,这并不是我的原创代码。所有的功劳归功于 Kangax的Github,他有很多功能来测试浏览器特性。
function () {
var container = document.body;
if (document.createElement &&
container && container.appendChild && container.removeChild) {
var el = document.createElement("div");
if (!el.getBoundingClientRect) {
return null;
}
el.innerHTML = "x";
el.style.cssText = "position:fixed;top:100px;";
container.appendChild(el);
var originalHeight = container.style.height, originalScrollTop = container.scrollTop;
container.style.height = "3000px";
container.scrollTop = 500;
var elementTop = el.getBoundingClientRect().top;
container.style.height = originalHeight;
var isSupported = elementTop === 100;
container.removeChild(el);
container.scrollTop = originalScrollTop;
return isSupported;
}
return null;
}
如果它能运行,那就是有效的;如果不能,你将会得到一个 null。
死亡和税收
。话虽如此,考虑到 JQM 的文档
,似乎你可以为 iOS5 创建一个例外。 - Ohgodwhyvar supportFixed = (function () {
var elem = document.createElement('div');
elem.style.cssText = 'position:fixed';
if (elem.style.position.match('fixed')) return true;
return false;
}());
这种东西在移动浏览器上能用吗?
function isFixedPositionSupported() {
var e = document.createElement('div')
try {
e.style.position = 'fixed'
return e.style.position == 'fixed'
} catch (exception) {
return false
}
}
Ohgodwhy的代码是正确的,但对于iOS,您可以检查用户代理并查看是否为iOS Safari。然后返回它被支持。用户代理字符串如下:
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
我不确定如何编写这段代码,但我确信这是您需要完成的任务来检测iOS。