文章博客

技术团队文档示例


客户端检测

<h4>一 、能力检测</h4> <p>能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力。</p> <pre><code class="language-javascript">if (object.propertyInQuestion){ //使用 object.propertyInQuestion }</code></pre> <p>1.检测某个属性是否存在并不能确定对象是否支持排序。更好的方式是检测 sort 是不是一个函数。</p> <pre><code class="language-javascript">function isSortable(object) { return typeof object.sort == "function"; }</code></pre> <p>2.确定浏览器是否支持 Netscape 风格的插件</p> <pre><code class="language-javascript">var hasNSPlugins = !!(navigator.plugins &amp;&amp; navigator.plugins.length);</code></pre> <p>3.确定浏览器是否具有 DOM1 级规定的能力</p> <pre><code class="language-javascript">var hasDOM1 = !!(document.getElementById &amp;&amp; document.createElement &amp;&amp; document.getElementsByTagName);</code></pre> <h4>二、怪癖检测</h4> <p>与能力检测类似,怪癖检测(quirks detection)的目标是识别浏览器的特殊行为。</p> <pre><code class="language-javascript">var hasDontEnumQuirk = function () { var o = { toString: function () {} }; for (var prop in o) { if (prop == "toString") { return false; } } return true; }();</code></pre> <p>以上代码通过一个匿名函数来测试该“怪癖”,函数中创建了一个带有 toString()方法的对象。在正确的 ECMAScript 实现中,toString 应该在 for-in 循环中作为属性返回。</p> <h4>三、用户代理检测</h4> <p>用户代理检测通过检测用户代理字符串来确定实际使用的浏览器</p> <pre><code class="language-javascript">document.write("浏览器名称: "+navigator.appName); document.write("浏览器版本号: "+navigator.appVersion); document.write("浏览器用户代理: "+navigator.userAgent); document.write("运行平台: "+navigator.platform); document.write("是否支持cookie: "+navigator.cookieEnabled); document.write("系统语言(IE): "+navigator.systemLanguage); document.write("用户语言(IE): "+navigator.userLanguage);</code></pre> <p>在决定使用哪种客户端检测方法时,一般应优先考虑使用能力检测。怪癖检测是确定应该如何处理代码的第二选择。而用户代理检测则是客户端检测的最后一种方案,因为这种方法对用户代理字符串具有很强的依赖性。</p>

页面列表

ITEM_HTML