pro*_*ons 18 javascript user-agent browser-feature-detection
我最近在求职面试中被问到这个问题,特别是围绕Javascript.我想知道正确的回应.
究竟是什么区别feature detection,feature inference以及使用 User agent字符串?
R. *_*olt 37
特征检测检查特征是否存在,例如:
if (window.XMLHttpRequest) {
new XMLHttpRequest();
}
Run Code Online (Sandbox Code Playgroud)
特征推断检查功能就像特征检测一样,但使用另一个功能,因为它假设它也将存在,例如:
if (document.getElementsByTagName) {
element = document.getElementById(id);
}
Run Code Online (Sandbox Code Playgroud)
检查UA字符串是一种古老的做法,不应再使用了.您不断更改UA检查,并且永远不会受益于新实现的功能,例如:
if (navigator.userAgent.indexOf("MSIE 7") > -1){
//do something
}
Run Code Online (Sandbox Code Playgroud)
功能检测:实际检查功能是否存在
if('localStorage' in window)
特征推断:如果x存在,我们可以假设y存在
if('localStorage' in window){
window.sessionStorage.setItem("this-should-exist-too", 1);
}
Run Code Online (Sandbox Code Playgroud)
如果您依赖于用户代理,那么您必须拥有浏览器X支持功能Y的地图