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也并不保证指定的属性在未来的版本中一定可用,这些属性主要供插件或内核开发人员使用。
以上就是jquery笔记——工具函数——jquery标志的详细内容。
