文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Chrome在解析html时的一个bug

Chrome在解析html时的一个bug

时间:2010-08-26  来源:MKing's Kindom

最近在写html分析程序,应为chrome的“开发人员工具”可以直接看到浏览器对代码的分析情况,比较方便,所以选择它作为分析结果的参照。

出于容错方面的考虑,我会有意写一些不标准的html代码来做测试,并查看是否与chrome的分析结果一致。在偶然间发现了这个小bug。

 

 

<div ="k">aaa</div>

 

 

此时chrome显示的html代码为

 

<div k="k">aaa</div>

 

 

当一个属性值被单引号或者双引号包围放在等号右侧,并且没有属性名在左侧的时候,chrome会把这个属性值作为属性名复制到左侧。前提是等号与引号包围,等号两侧可以有空格并不限数量,引号包围的值可以是任意值。

 

可以测试一下这个属性是否有效

 

<div ="k" onclick="(function(o){alert(o.getAttribute('k'));})(this)">aaa</div>

 

 

在chrom下这个点击事件正确地返回了属性k的值,但ie和ff均为null。

 

比较致命的是,引号包围内的值可以是任意值:

 

<div ="alert(1>0)">aaa</div>

 

 

chrome认为是:

 

<div alert(1="alert(1">0)">aaa</div>

 

 

看着有点乱我解释一下。它首先取了alert(1>0)这一段,并且忽略了>之后的代码,因为它认为这个>是封闭标签的字符,剩下alert(1作为属性值和属性名,并规范为alert(1="alert(1"。但是对之后的代码仅仅是做了替换,留下了>0)"这4个字符。重新分析的时候,在这4个字符中0之前的>号封闭了div标签,剩下的就作为文本显示到前台了。

ie6/ff3.6.8均无此问题。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载