JQuery字符串转DOM节点BUG
作者:dh20156 日期:2010-06-22
在修正一个UI的BUG时发现JQuery将字符串转DOM节点时会将针对IE6的CSS Hack的样式部分进行转义,测试代码如下:
1、引入JQuery代码
2、运行如下代码测试:
+function(){
var s = '<h1><em class="a_b c" style="min-height:50px;_height:50px;">x</em></h1>';
var d = $(s);
alert(d.html());
}();
FF中的结果为:
<em class="a_b c" style="min-height: 50px;">x</em>
"_height:50px;" 部分不见了。
IE下的结果为:
<EM class="a_b c" style="MIN-HEIGHT: 50px; HEIGHT: 50px">x</EM>
"_" 不见了。
遇到此BUG的同学可以将inline的style改成className的方式来处理一下。
JQuery Bug Report: http://forum.jquery.com/topic/transform-bug-in-html-string
评论: 4 | 引用: 0 | 查看次数: 585
hack不属于bug
这也算bug,我感觉这样的实现就挺好的
dh20156 于 2010-06-23 08:32 AM 回复
呵呵,对FireFox的那部分我赞同,对IE的部分我不赞同。就算是我们在做对用户输入的处理时都会保持一个原则,那就是不去动用户输入的数据,更何况是这种开发的源码处理。
既然是动态生成的,就不是在源代码里面看的,
假设你是用firebug查看,因为firefox本身是不识别_height的,所以firebug等工具会忽略这条属性,即使在firebug中手动写入进去也一样。
而ie6下不识别min-height(没有调试工具,不知道最终显示什么样)
不过我在ie8中看到的是两条属性都存在,
所以,这个现象可能是在浏览器或者调试工具的处理过程中造成的,而不是jquery进行的转义。
dh20156 于 2010-06-23 08:30 AM 回复
假设你是用firebug查看,因为firefox本身是不识别_height的,所以firebug等工具会忽略这条属性,即使在firebug中手动写入进去也一样。
而ie6下不识别min-height(没有调试工具,不知道最终显示什么样)
不过我在ie8中看到的是两条属性都存在,
所以,这个现象可能是在浏览器或者调试工具的处理过程中造成的,而不是jquery进行的转义。
No,you wrong,这并不是firebug什么导致的原因,你可以实际测试一下,然后我们再来讨论。
发表评论
上一篇
下一篇

文章来自:
Tags:
回复







还有,你可以看jQuery源码部分,你可以发现它[确实没做]你认为的那个转义。