jQuery.support
jQuery.support 官网原E文: Object
描述: 一组属性,它们代表了不同的浏览器功能或缺陷的存在的集合。
version added: 1.3jQuery.support
这是一个很好的做法,执行功能检测 ,
而不是使用$.browser
来检测在当前用户代理(user agent)和改变页面显示在此基础上运行的浏览器。这意味着,前执行的代码依赖浏览器功能,我们测试,以确保功能正常运作。为了使这个过程更简单,jQuery的执行,使许多这样的测试结果为属性提供了我们作为jQuery.support
对象。
所有这些支持的属性值都通过特性检测(和不使用任何浏览器的形式)。
以下是解释如何使用少的资源特征检测工作:
虽然jQuery包含了一些属性,开发者可以随意添加自己的需要决定的。许多jQuery.support
性能相当低,所以他们对插件和jQyery核心和非常有用,而不是一般日常的日常开发。由于这些测试需要jQuery的内部,他们必须在每一页上都进行加载;出于这个原因这个列表也很简短,仅限于由jQuery本身所需的功能。
在这些测试包括jQuery.support
如下:
-
ajax
等于为true,如果浏览器能够创建一个XMLHttpRequest
对象。 -
boxModel
:等于为true。如果页面是根据W3C的CSS盒模型渲染 (IE 6和7的怪异模式下为false).直到文件准备就绪,此属性为空。 -
changeBubbles
:等于为true。如果改变事件向上冒泡的DOM树,根据所要求的 W3C的DOM事件模型 。 (目前在IE返回false和jQuery模拟气泡)。 -
checkClone
等于为true,如果在浏览器正确地克隆单选按钮或复选框的选中状态文档片段。 -
checkOn
等于为true,如果CheckBox的值默认为“on”时未指定任何值。 -
cors
等于为true,如果浏览器可以创建一个XMLHttpRequest
对象,如果该XMLHttpRequest
对象有一个withCredentials
属性。要启用跨域请求的环境中不支持cors yet但尚未允许跨域 XHR请求 (Windows小工具等),设置$.support.cors = true;
。 CORS WD -
cssFloat
:等于为true。如果该属性名称包含CSS float的值是.cssFloat,定义在CSS的规格 。(这是目前在IE中返回false,它使用styleFloat代替)。 -
hrefNormalized
:等于为true。如果.getAttribute()
方法检索href
元素合格的URL属性不变,而不是归到一个完全合格的URL。(目前在IE中返回false,URL的规范化 )。 -
htmlSerialize
: 等于为true。如果浏览器能够序列化/插入元素使用
.innerHTML
元素属性。(目前在IE中会返回false)。 -
leadingWhitespace
:等于为true。如果浏览器插入与内容完全按照所提供的.innerHTML,具体地说, 特别是,如果前面的空白字符将被保留。(目前在IE 6-8中会返回false) -
noCloneChecked
等于为true,如果克隆的DOM元素的复制的状态.checked
的expando。(这在IE中会返回false)。 (在jQuery 1.5.1新增) -
noCloneEvent
: 等于为true,如果克隆的DOM元素的事件处理程序是没有创建(即,如果在源元素的事件处理程序不克隆)。 (这是在IE中会返回false)。 -
opacity
: 等于为true,如果浏览器能正确地解释透明度的样式属性。 (目前在IE中返回false,因为他用alpha滤镜代替)。 -
optDisabled
等于为true,如果在禁用选项元素选择元素不会自动标记为禁用。 -
optSelected
等于true,如果一个<option>
元素,默认选择的有一个工作中的selected
属性。 -
style
: 等于true,如果一个元素的内联样式都可以通过DOM访问属性访问style,通过DOM级别2规范的要求。在这种情况下,.getAttribute('style')
可以检索该值,在IE浏览器,.cssText
是用于此目的。 -
submitBubbles
: 等于为true,如果该事件提交了所需的冒泡作为DOM树, W3C的DOM事件模型 。(目前在IE返回false和jQuery模拟气泡)。 -
tbody
: 等于true,如果一个空<table>
元素可以存在没有<tbody>
元素。根据HTML规范,这个子元素是可选的,因此,属性应该是真实的完全兼容的浏览器。如果false,我们必须考虑的浏览器中注入<tbody>
标签的可能性。目前在IE返回false,它会自动tbody
如果它不是在目前的字符串分配innerHTML
)。
scriptEval
: 等于true,如果内嵌脚本执行时自动计算并插入到文档中使用标准的DOM操作方法一样,想这样的appendChild()
和createTextNode()
。(目前在IE中返回false,它使用.text
插入可执行的脚本)。
注:在此之前到jQuery 1.5.1,
scriptEval()
方法是静态的scriptEval
属性。到一个方法的改变允许测试,直至第一次使用,以防止内容安全政策内嵌脚本侵犯推迟。
Examples:
Example: Returns the box model for the iframe.
<!DOCTYPE html>
<html>
<head>
<style>
p { color:blue; margin:20px; }
span { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<p>
</p>
<script>
$("p").html("This frame uses the W3C box model: <span>" +
jQuery.support.boxModel + "</span>");
</script>
</body>
</html>
Demo:
Example: Returns false if the page is in QuirksMode in Internet Explorer
jQuery.support.boxModel
Result:
false