视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jQuery笔记——工具函数——jQuery标志
2020-11-27 20:16:49 责编:小采
文档

jQuery定义了很多工具函数,这些函数的命名空间为$,但不操作包装集,用户可以把它看作是顶层函数,不同之处是他们定义在$实例上,而不是定义在window实例上,类似于静态类型函数。

通常来说,工具函数的主要任务是操作除DOM意外的JavaScript对象,或执行一些非对象相关的操作。

jQuery通过定义在$上的变量为开发人员提供一些有用的客户信息,通过这些标志信息可以方便的检测当前浏览器的功能,以便用户基于这些信息进行决策。

这些标志信息包括:jQuery.browser、jQuery.boxModel和jQuery.support

一、检测用户代理

浏览器检测方法:

1. 字符串检测法:根据navigator.userAgent属性返回值进行检测。but,jQuery从1.3版本就不再支持使用这种方法了,原因:使用麻烦,与jQuery的灵巧特色相违背。

2. 特征检测法:根据浏览器是否支持特定功能来决定操作方式。

非精确,最安全

如果不关心浏览器的身份,仅在意浏览器的执行能力,那么使用这种方法足矣。

例如:

 var a;
 if(document.getElementsByName){ //如果存在getElementsByName,则使用该方法获取a元素
 a = document.getElementsByName("a");
 }
 else if(document.getElementsByTagName){ //如果存在getElementsByTagName,则使用该方法获取a元素
 a = document.getElementsByTagName("a")
 }

当使用对象,方法或属性时,可以先检测当前浏览器是否支持它。在逻辑表达式中,如果浏览器支持,则会返回该对象,属性或方法,这是JavaScript就会强制把这些对象或成员转换为true。如果不支持,则会返回undefined,JavaScript会自动把它转换为false。

注意:检测方法或函数时,不要加小括号,否则JavaScript解释器会调用该方法或函数,同时如果指定函数伙房发不存在,会产生编译错误。

检测浏览器类型:

js:var browser = navigator.userAgent;

jQuery: browser属性。允许检测4个最流行的浏览器类,如:Internet Explorer 、Mozilla、Webkit、Opera,以及每个版本信息标志。

可用标志包括:webkit、safari(deprecated)、opera、msie和mozilla。

$.browser 属性在jQuery 1.9已经被移除。用于返回用户当前使用的浏览器的相关信息。

不建议使用该属性来检测浏览器,因为它是根据navigator.userAgent属性来确定浏览器信息的,因此它的识别并不一定准确。

二、检测盒模型

jQuery.boxModel:标志可以获取当前页面使用的是哪一种盒模型。true:W3C标准盒模型;false:IE浏览器的盒模型

jQuery1.0 新增该静态属性;1.3中被标记已过时,请使用 jQuery.support.boxModel替代;1.8中被移除。

除IE浏览器外,其他浏览器都支持W3C标准盒模型,而IE浏览器能够根据页面模式(严格模式或怪异模式)有选择的使用不同类型的盒模型。如果页面顶部声明了文档类型(DOCTYPE),则IE也会采用严格模式,即W3C标准盒模型解析元素。如果文档当中没有包含文档类型(DOCTYPE),或者包含了无法识别的文档类型声明,即会以怪异模式显示,并按IE的传统的盒模型来解析元素。

IE传统的盒模型和W3C标准盒模型的区别:

1.IE传统盒模型:width和height属性包含内边距和边框宽度

2.W3C标准盒模型:width和height属性不包含内边距和边框宽度

用JavaScript检测盒模型:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>检测盒模型[JavaScript]</title>
 <script src="js/jquery2.1.3.min.js"></script>
 <script type="text/javascript">
 function isBoxModel(){
 var p = document.createElement("p");
 p.style.width = p.style.paddingLeft = "1px";
 document.body.appendChild(p);
 var width = p.offsetWidth;
 p.style.display = "none";
 document.body.removeChild(p);
 return width === 2;
 }
 window.onload = function(){
 alert(isBoxModel() && "支持W3C标准盒模型" || "支持IE的怪异解析模式");
 }
 </script>
</head>
<body>
</body>
</html>

三、检测功能或缺陷

jQuery的support属性:

返回一个Object对象,在该对象中包含了一组属性,他们代表了不同的浏览器功能或缺陷的存在的合集。

该对象的属性并不是一成不变的,jQuery也并不保证指定的属性在未来的版本中一定可用,这些属性主要供插件或内核开发人员使用。

下载本文
显示全文
专题