想知道是否可能。
找到:
<script type="javascript">
isSafari3 = false;
if(window.devicePixelRatio) isSafari3 = true;
</script>
<{3>} http://dustinbrewer.com/css-hackgetting-safari-to-behave/。但它似乎同时针对chrome和safari,我假设它更像是一个webkit目标。还
console.log(isSafari3);
以px计数返回,而不是布尔值。所以我不确定那个人在谈论什么。
感谢您的帮助。
答案 0 :(得分:3)
您无法可靠地使用devicePixelRatio的存在来可靠地检测Safari。它今天可能会工作,但没有什么能阻止其他浏览器实现它,然后你的代码就会完全崩溃。
测试特定浏览器通常是个坏主意。更聪明的做法是测试您要使用的特定功能。如果浏览器显示该功能存在,则使用它,如果没有,则使用其他一些回退机制。
功能检测更容易维护,因为随着浏览器的更改,您不必不断更改代码以调整每个浏览器的不同版本的行为。随着浏览器通过添加对最新功能的支持而发展,您的代码会自动适应它们。
这是一篇关于特征检测的文章:http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting。 library modernizr包含许多功能检测代码段,您可以将其整体使用,也可以查看它如何检测功能并仅使用该特定检测。
答案 1 :(得分:0)
此表达式将window.devicePixelRatio的值转换为boolean:
isSafari3 = false;
if(window.devicePixelRatio) isSafari3 = true;
在Chrome中返回true,在Firefox中返回false。
考虑:
window.devicePixelRatio = undefined; // false, null, "", 0
if (window.devicePixelRatio){
// false
}
window.devicePixelRatio = "foo";
if (window.devicePixelRatio){
// true
}
除了@ jfriend00提到的原因,它可能是一个糟糕的主意。