jQuery 1.2.6和jQuery 1.3.1的特殊字符选择器极限测试

心血来潮,把键盘上能按出来的特殊字符都按了个遍
依次是:
~`!@#$%^&*()_+{}|”:?><,./;'[]\ 其中<和"不能放到id里,页面显示不全之外其他都可以哦~ 分别放在中间,结尾和开头,比如te[st、te[、[st这种。 好孩子不要学哦~ 附W3C规定

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens (“-“), underscores (“_”), colons (“:”), and periods (“.”).

ID和NAME必须由字母([A-Za-z]) 开头,之后可以跟任意数量的字母、数字([0-9])、短横(“-“)、下划线(“_”)、冒号(“:”)和点(“.”)。

实验结果表明,jQuery 1.3.1的选择器对于这些BT的特殊字符没有jQuery 1.2.6强劲,jQuery 1.2.6基本上是getElementById能搞定的他都能搞定,而1.3.1中的Sizzle选择器却没这么强悍,当然这纯属测试而已,同时提醒各位同学,一定要尊崇标准啊……不要随便乱来……我知道某些会输出诸如foo[bar]之类的ID,不可取啊,不符合标准的啊……虽然#foo\\[bar\\]是能成功匹配的,但#foo\\[bar就不行。总之注意别用这些离奇的符号做ID就差不多不会有问题了。

测试页面在这里:
http://shawphy.com/demo/selector/jQuery-1-2-6-selector-test.html
http://shawphy.com/demo/selector/jQuery-1-3-1-selector-test.html

测试结果,
1.2.6:三个失败

te\st
te\
\st

1.3.1:一坨……

te~st
te(st
te+st
te[st
te\st
te>st
te,st
te~
te(
te+
te[
te\
te>
te,
~st
(st
+st
[st
\st
>st
,st
================
dev maillist发了邮件,John大回复说似乎可以解决,期待一下吧。

================
这个bug已经在1.3.2中修复,1.4.2中也通过了测试。
http://shawphy.com/demo/selector/jQuery-1-3-2-selector-test.html

《jQuery 1.2.6和jQuery 1.3.1的特殊字符选择器极限测试》有3个想法

  1. 标准就是在出现了一坨让人头痛的东西之后才出现的……
    等1.3.2甚至1.3.3的修复吧……

发表评论