如何利用js判断浏览器类型

如何利用js判断浏览器类型,第1张

利用js判断浏览器类型

function myBrowser(){

var userAgent = navigatoruserAgent; //取得浏览器的userAgent字符串

var isOpera = userAgentindexOf("Opera") > -1;

if (isOpera) {

return "Opera"

}; //判断是否Opera浏览器

if (userAgentindexOf("Firefox") > -1) {

return "FF";

} //判断是否Firefox浏览器

if (userAgentindexOf("Chrome") > -1){

return "Chrome";

}

if (userAgentindexOf("Safari") > -1) {

return "Safari";

} //判断是否Safari浏览器

if (userAgentindexOf("compatible") > -1 && userAgentindexOf("MSIE") > -1 && !isOpera) {

return "IE";

}; //判断是否IE浏览器

}

//以下是调用上面的函数

var mb = myBrowser();

if ("IE" == mb) {

alert("我是 IE");

}

if ("FF" == mb) {

alert("我是 Firefox");

}

if ("Chrome" == mb) {

alert("我是 Chrome");

}

if ("Opera" == mb) {

alert("我是 Opera");

}

if ("Safari" == mb) {

alert("我是 Safari");

}

js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。

1、Number类型

Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。

2、String类型

在JS中字符串需要使用引号引起来。使用双引号或单引号都行,但是不要混着用。引号不能嵌套,双引号不能放双引号,单引号不能放单引号。

3、Boolean类型

该类型只有两个值,true和false。

4、Undefined类型

只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。

5、Null类型

null类型被看做空对象指针,null类型也是空的对象引用。

6、Object类型

js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。

<script type="text/javascript">

function VirtualTrack(id,type) {

if(type=='text'){

documentgetElementById(id)value = "我是个输入框";

}else if(type=='button'){

documentgetElementById(id)value = "我是个按钮";

}

}

</script>

<input id="Text2" type="text" />

<p><input id="Text1" type="text" value="" onblur="VirtualTrack('Text1','text')"/></p>

<p><input id="Button1" type="button" value="button" onblur="VirtualTrack('Button1','button')"/></p>

最常见的判断方法:typeof

alert(typeof a) ------------> string

alert(typeof b) ------------> number

alert(typeof c) ------------> object

alert(typeof d) ------------> object

alert(typeof e) ------------> function

alert(typeof f) ------------> function

其中typeof返回的类型都是字符串形式,需注意,例如:

alert(typeof a == "string") -------------> true

alert(typeof a == String) ---------------> false

另外typeof 可以判断function的类型;在判断除Object类型的对象时比较方便。

判断已知对象类型的方法: instanceof

alert(c instanceof Array) ---------------> true

alert(d instanceof Date)

alert(f instanceof Function) ------------> true

alert(f instanceof function) ------------> false

注意:instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

根据对象的constructor判断: constructor

alert(cconstructor === Array) ----------> true

alert(dconstructor === Date) -----------> true

alert(econstructor === Function) -------> true

注意: constructor 在类继承时会出错

eg,

function A(){};

function B(){};

Aprototype = new B(); //A继承自B

var aObj = new A();

alert(aobjconstructor === B) -----------> true;

alert(aobjconstructor === A) -----------> false;

而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true:

alert(aobj instanceof B) ----------------> true;

alert(aobj instanceof B) ----------------> true;

言归正传,解决construtor的问题通常是让对象的constructor手动指向自己:

aobjconstructor = A; //将自己的类赋值给对象的constructor属性

alert(aobjconstructor === A) -----------> true;

alert(aobjconstructor === B) -----------> false; //基类不会报true了;

通用但很繁琐的方法: prototype

alert(ObjectprototypetoStringcall(a) === ‘[object String]’) -------> true;

alert(ObjectprototypetoStringcall(b) === ‘[object Number]’) -------> true;

alert(ObjectprototypetoStringcall(c) === ‘[object Array]’) -------> true;

alert(ObjectprototypetoStringcall(d) === ‘[object Date]’) -------> true;

alert(ObjectprototypetoStringcall(e) === ‘[object Function]’) -------> true;

alert(ObjectprototypetoStringcall(f) === ‘[object Function]’) -------> true;

以上就是关于如何利用js判断浏览器类型全部的内容,包括:如何利用js判断浏览器类型、js数据类型、如何使js获取html控件类型,并使各主流浏览器兼容最大等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/9796482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存