jQuery.support返回: Object
描述:
它们代表了不同的浏览器功能或错误存在的属性集合。当他们不再需要在内部以提高页面的启动性能时,这些特定属性可能会被删除。
对于你自己的项目功能检测的需求,
我们强烈建议使用外部库,比如Modernizr的,而不是依赖于jQuery.support
上的属性。
添加的版本: 1.3jQuery.support
注:官网中以下全部内容已经被删除,我们强烈建议浏览器功能性检测不要使用
jQuery.support
上的属性。而使用比如Modernizr这样的外部类库!与使用 $.browser
来检测 user agent 或者根据不同的浏览器改变页面的展示效果相比,使用功能检测是更好的作法。为了使该该过程变得更简单,jQuery 进行了很多这样的测试,来设置 jQuery.support
对象的属性。
由于 jQuery 内部需要使用这些方法来进行检测,所以它们会在每次加载页面时被执行。下面列出了一些可用于检测的属性,但是某些不建议使用的或被删除的属性并没有被列出来,因为这些属性不是讨论的重点,而且当 jQuery 的内部代码不再需要某些属性时,它们就会被移除。
以下是解释如何使用少的资源特征检测工作:
对于你自己的项目功能检测的需求,
我们强烈建议使用外部库,比如Modernizr的,而不是依赖于jQuery.support
上的属性。
在这些测试包括jQuery.support
如下:
-
ajax
如果浏览器能创建XMLHttpRequest
对象,则返回 true。 -
boxModel
如果页面是根据 W3C CSS Box Model (当 IE 6 和 7 工作在 Quirks 模式下,该属性值是 false) 进行描绘的,则返回 true。在文档 ready 发生之前,该属性值一直是 null。 -
changeBubbles
如果 change 事件满足 W3C DOM event model 的要求,在 DOM 树中向上冒泡时,则返回 true。(目前 IE 会返回 false,因为冒泡行为是 jQuery 模拟的。) -
checkClone
如果浏览器正确克隆了文档片断中的复选框或单选按键的状态,则返回 true。 -
checkOn
当复选框在没有赋值的情况下,其默认值是 "on",则返回 true。 -
cors
如果浏览器能创建XMLHttpRequest
对象,并且该XMLHttpRequest
对象含有withCredentials
属性的话,则返回 true。在尚不支持 cors 属性,但是允许跨域 XHR 请求(例如 windows gadget, 等)的环境下,要启用跨域请求,请进行如下设置$.support.cors = true;
。 CORS WD -
cssFloat
如果属性值含有的 CSS float 值是 .cssFloat 的话,则返回 true。其中, .cssFloat 是在 CSS Spec 中定义的。(目前在 IE 中,该属性的返回值是 false,因为 IE 使用了 styleFloat 来代替该属性)。 -
hrefNormalized
如果.getAttribute()
方法返回的href
属性值没有发生变化,并不是标准化成完整的 URL 的话,则返回 true。(目前在 IE 中会返回 false,因为 IE 会将 URL 标准化。) -
htmlSerialize
如果浏览器能够使用元素的.innerHTML
属性来序列化/插入<link>
元素的话,则返回 true。(目前在 IE 中会返回 false)。 -
leadingWhitespace
如果使用 .innerHTML 进行内容插入时,插入后的结果和所提供的内容完全一致,并且保留开头的空白字符,则返回 true。(在 IE 6-8 中返回 false)。 -
noCloneChecked
如果克隆后的 DOM 元素保持了.checked
expando 状态,则返回 true。 (目前在 IE 中会返回 false)。 (在 jQuery 1.5.1 中追加的该属性) -
noCloneEvent
如果克隆后的 DOM 元素上并没有被克隆元素上的事件(也就是说,源元素不是被克隆的。),则返回 true。(目前在 IE 中会返回 false)。 -
opacity
如果浏览器能正确的处理透明度属性,则返回 true。(目前在 IE 中会返回 false,因为 IE 使用了 alpha 滤镜来代替该属性)。 -
optDisabled
如果含有被禁用的 option 元素的 select 元素没有被自动禁用的话,则返回 true。 -
optSelected
如果被默认选中的<option>
元素是通过selected
属性被选中的,则返回 true。 -
scriptEval()
如果通过标准的 DOM 操作方法,例如,.appendChild()
和.createTextNode()
,向文档中插入内嵌脚本时,如果脚本被自动计算并执行了,则返回 true。(目前在 IE 中会返回 false,因为 IE 使用.text
来插入可执行的脚本)。注意: 该属性在 jQuery 1.6 中已经被移除。在 jQuery 1.5.1 之前,scriptEval()
方法还是一个静态的scriptEval
属性。将静态属性改成方法,允许测试被推迟到第一次使用时进行,是为了防止违反内嵌脚本的内容安全策略。 -
style
如果可以通过 DOM 属性访问元素的 inline 样式,以满足 DOM Level 2 规约,则返回 true。在这种情况下,使用.getAttribute('style')
能够返回 style 的值。在 Internet Explorer 中,则要使用.cssText
来达到相同的目的。 -
submitBubbles
submit 事件根据 W3C DOM event model 的规定,能够在 DOM 树中向上冒泡,则返回 true。(目前在 IE 中会返回 false,因为冒泡行为是 jQuery 模拟的)。 -
tbody
如果允许一个空的<table>
元素在没有<tbody>
元素的情况下存在,则返回 true。根据 HTML 规范,<table>
的子元素是可选的,因此,在完全符合规范的浏览器中,该属性的值应该是 true。如果返回了 false,则我们必须要考虑浏览器隐式注入<tbody>
标签的可能性。(目前在 IE 中会返回 false,因为如果通过innerHTML
进行赋值的字符串中不存在tbody
的话,则 IE 会自动插入tbody
)。
例子:
Example: 返回 iframe 的盒子模型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|
Demo:
Example: 在 Internet Explorer 中,访问的页面处于 QuirksMode,则返回 false。
1
|
|
Result:
1
|
|