We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
浏览器能力检测的目的是,确保浏览器在实现公共接口的时候保持一致。
能力检测的基本模式:
function polyfill () { if (object.propertyInQuestion) { // 如果当前浏览器支持,则使用object.propertyInQuestion } else { // 自定义方法让浏览器支持 } }
为了确保能力检测的可靠性,应该针对性的进行检测。例如,检测对象是否具有sort()方法,最好去判断object.sort是否是一个函数而非存在。
在可能的情况下,尽量使用typeof进行能力检测
// 错误,当对象中存在sort属性的时候也会返回true function isSortable(object) { return !!object.sort // 双非操作符得到布尔值 } // 正确 function isSortable(object) { return typeof object.sort === 'function' }
在进行浏览器检测时,需要注意有的方法并不是某个浏览器独有的。根据浏览器不同将能力组合起来是更可取的方式。
当知道自己需要哪些特定的浏览器特性时,可以直接一次性检测所有相关特性,而不是检测当前浏览器来进行分别polyfill
// 确定浏览器是否有DOM1规定的能力 var hasDOM1 = function = !!(document.getElementById && document.createElement && document.getElementByTagName)
怪癖检测的目标是识别浏览器的特殊行为(bug)。
IE8以及之前版本如果有实例属性与[[Enumerable]]为false的原型属性同名,则实例属性不会出现在for-in循环中。检测是否有怪癖方法:
var hasDontEnumeQuirk = function() { var o = { toString: function(){} } for (var prop in o) { if (prop === 'toString') { return false } } return true }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
能力检测
概念
浏览器能力检测的目的是,确保浏览器在实现公共接口的时候保持一致。
能力检测的基本模式:
可靠的能力检测
为了确保能力检测的可靠性,应该针对性的进行检测。例如,检测对象是否具有sort()方法,最好去判断object.sort是否是一个函数而非存在。
在可能的情况下,尽量使用typeof进行能力检测
能力检测比浏览器检测更好
在进行浏览器检测时,需要注意有的方法并不是某个浏览器独有的。根据浏览器不同将能力组合起来是更可取的方式。
当知道自己需要哪些特定的浏览器特性时,可以直接一次性检测所有相关特性,而不是检测当前浏览器来进行分别polyfill
怪癖检测
概念
怪癖检测的目标是识别浏览器的特殊行为(bug)。
实践
IE8以及之前版本如果有实例属性与[[Enumerable]]为false的原型属性同名,则实例属性不会出现在for-in循环中。检测是否有怪癖方法:
用户代理检测
概念
The text was updated successfully, but these errors were encountered: