客户端检测(1)

本文介绍了如何检测不同浏览器对特定DOM方法的支持情况,包括getElementById和createElement等,并提供了实际的JavaScript代码示例。同时,文章还讨论了用户代理检测的方法及其局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举例来说,IE5.0以前并不支持document.getElementById()这个DOM方法。尽管可以使用document.all属性来实现相同的目的,但是IE5.0以前并没有getElementById(),所以有下面这个例子

function getElement(id){
    if (document.getElementById){
        return document.getElementById(id);
    }else if(document.all){
        return document.all(id);
    }else{
        throw new Error("No way to retrieve element")
    }
}
getElement("list")

在大多数浏览器在检测到document.createElement()这个方法都会返回true。但是在IE8以前的版本不行

function hasCreateElement(){
    return typeof document.createElement=="function";
}
//IE8之前返回false,这个类型是object,

DOM对象就是宿主对象,IE和更早版本的宿主对象是通过COM而非JSript实现的。因此document.createElement()函数是一个COM对象,所以typeof才会返回”object”,IE9修正了这个问题。

我们对客户端进行检测的时候,不能检测某个或几个属性来确定浏览器,例如

var isFireFox=!!(navigator.vendor&&navigator.vendorSub)//Safari也实现了相同的属性。
var isIE=!!(document.all&&document.uniqueID)//假设了IE以后的版本还会存在这两个属性,并且其他浏览器都不会实现这个功能

如果你知道你自己的应用程序需要使用某种特定的浏览器特性,最好是检测一次所有的相关特性,而不要分别检测。

var hasNSPlugins=!!(navigator.plugins&&navigator.plugins.length);//是否支持NetScape
var hasDOM1=!!(document.getElementById&&document.createElement&&document.getElementsByTagName)

用户代理检测

很多时候,我们需要确切的知道浏览器的呈现引擎。我们编写的脚本将主要检测5种呈现引擎:IE、Gecok、webki、KHTML、Opera

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值