jQuery 1.6.3 即将发布!我们需要您的帮助,通过测试此候选版本来确保一切正常。
您可以通过包含以下两个文件中的任何一个来进行测试(一个压缩,一个未压缩)。我们推荐使用 jsFiddle 来进行测试用例,您只需在其中选择“jQuery (edge)”即可。如果您需要报告错误且无法使用 jsFiddle,请使用未压缩版本和您的测试用例。
请使用您最珍贵的代码测试此版本。如果您发现与 1.6.2 有任何重要的差异,请尽快 提交错误报告,并确保提及您正在针对 jQuery 1.6.3 RC1 进行测试。
如果您从更旧版本的 jQuery 进行大幅升级,您发现的差异可能是由于主要版本发布中引入的已记录的行为变更导致的。请先使用已发布的 1.6.2 版本检查您的代码,以确保问题仅存在于 1.6.3 RC1 中。
亮点
修复一个 XSS 攻击向量: 用户 ma.la 报告了一种常见的模式,许多网站使用它来使用 location.hash
选择元素,这允许攻击者将脚本注入页面。这种做法似乎相当普遍,因此我们决定修改选择器识别,以防止在最常见的情况下注入脚本。如果字符串包含在 $()
中,并且在 HTML 标签之前有“#”字符,则该字符串不能包含 HTML 标签(因此不能包含脚本)。有关更多信息和测试用例,请参阅上面链接的工单。
不再有动画 “虫洞”: 我们对浏览器 requestAnimationFrame
API 抱有很高的期望,当我们在 1.6 版本中添加了对它的支持时。然而,从那以后,我们收到的最多投诉之一与 requestAnimationFrame
在标签不可见时的行为方式有关。所有在标签不可见时启动的动画都会“堆积”起来,直到标签重新获得焦点才执行。然后,它们都会以极快的速度进行动画!我们已经删除了对该 API 的支持(这不会影响您调用 jQuery 动画功能的方式),并计划将其整合到未来版本的 jQuery 中。
更好的 HTML5 数据属性名称处理: $().data()
API 同时处理 jQuery 和插件内部使用的的 data-
属性,以及读取 HTML5 data-
属性的初始值。我们已经改进了使用 HTML5 约定(例如,在需要时将 camel-case
转换为 camelCase
)的能力。但是请记住,$().data()
API 只是在初始时读取 HTML5 data-
属性,出于性能原因,它不会将后续的数据更改与属性同步。若要更新 HTML 标记中的实际属性,请使用 .attr()
。
jQuery 1.6.3 变更日志
1.6.3 版本的当前变更日志
Ajax
- #9255: jQuery.parseXML 错误处理在 WebKit 浏览器中不起作用
- #9854: 传递 statusText 而不是对其进行“规范化”
- #9887: jQuery.ajaxSetup 可能会导致不必要的内存使用
- #9970: ajax.js 中的拼写错误:status 应该是 jqXHR.status?
- #10098: 编码类似注释的 Accept 标头以避免移动运营商篡改
属性
- #9630: foo.contents().hasClass() 返回错误的值
- #9699: removeAttr(‘style’) 不会始终在 WebKit 中删除 style 属性
- #9719: removeAttr(‘disabled’) 不会改变 IE6 中输入的颜色
- #9979: .prop(‘tabIndex’) 为尚未设置 tabIndex 的元素返回不一致的结果
- #9980: 通过在 IE6/7 中对所有内容使用 getAttributeNode 来简化 attr 代码
构建
- #9988: 压缩版 jQuery 中的最小许可证标头
核心
- #9521: 使用 $(location.hash) 和 $(#
) 的 XSS 漏洞? - #9897: 使用 try-catch 检测 isPlainObject
- #10076: 如果第二个参数是 `null` 或 `undefined`,$.inArray 会导致 IE6 和 Chrome 崩溃
CSS
- #6652: 动画完成后移除 filter:alpha(opacity=100)
- #9572: 在 .css() 方法中支持 -ms-transform
- #10021: 无法使用 .css() 和 .animate() 的相对值语法添加负数
数据
- #8235: jQuery.data 在某些情况下会引发脚本错误
- #9318: HTML5 数据属性在属性名称包含数字时表现怪异
- #9413: $.fn.removeData 不会删除名称中带有连字符的数据
- #9779: 允许数据属性值的非空 | 未定义评估
- #9794: jQuery.fn.data() 正确处理对任意数据属性值的访问
- #10016: 无法使用 jQuery.data 方法检索名称中带有连字符的键下的“假值”
- #10080: 从框架窗口卸载在 IE8 中出现错误
尺寸
- #10123: .width() 在 Firefox 6 中可以返回浮点数
效果
事件
- #7071: 在 IE 中,在提交特殊处理程序期间访问 VML 元素的 ‘type’ 属性失败
操作
- #9587: 克隆带有对象的 div 会导致 IE8 错误
支持
- #9634: 在 support.js 初始化期间左上角出现可见的“t”字符
- #9823: 在 IE 8 中,在 BODY 中使用 background-image 时会崩溃
- #9964: test/support.js 模块 strictEqual 拼写错误
- #10029: $.support.scriptEval 已删除,但仍然包含在文档中
如果您发现问题,请尽快提交错误报告,并附上测试用例,如上所述。博客评论或 Twitter 不会作为有帮助的错误报告!