JQuery字符串转DOM节点BUG

在修正一个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



[本日志由 dh20156 于 2010-06-22 06:00 PM 编辑]
文章来自: DHTML精英,WEB前端专家!
引用通告: 查看所有引用 | 我要引用此文章
Tags: jquery
评论: 4 | 引用: 0 | 查看次数: 585
回复回复jinyc[2010-08-02 10:24 AM | del]
新建一个源码,将那个s(h1)放到body里,然后用js的alert查看它的innerHTML,你用FF和IE分别测试,你会发现它们是不同的,你看下弹出来的结果是什么?呵呵,你的这个bug报告好像提交错了!

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

回复回复terry[2010-06-24 01:01 AM | del]
hack不属于bug
回复回复独孤逸辰[2010-06-22 11:08 PM | del]
这也算bug,我感觉这样的实现就挺好的
引用来自 dh20156 dh20156 于 2010-06-23 08:32 AM 回复
呵呵,对FireFox的那部分我赞同,对IE的部分我不赞同。就算是我们在做对用户输入的处理时都会保持一个原则,那就是不去动用户输入的数据,更何况是这种开发的源码处理。
回复回复番茄[2010-06-22 10:34 PM | del]
既然是动态生成的,就不是在源代码里面看的,
假设你是用firebug查看,因为firefox本身是不识别_height的,所以firebug等工具会忽略这条属性,即使在firebug中手动写入进去也一样。
而ie6下不识别min-height(没有调试工具,不知道最终显示什么样)

不过我在ie8中看到的是两条属性都存在,
所以,这个现象可能是在浏览器或者调试工具的处理过程中造成的,而不是jquery进行的转义。
引用来自 dh20156 dh20156 于 2010-06-23 08:30 AM 回复
No,you wrong,这并不是firebug什么导致的原因,你可以实际测试一下,然后我们再来讨论。
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 关闭