liunian / compatibility-detector

Automatically exported from code.google.com/p/compatibility-detector
Apache License 2.0
0 stars 1 forks source link

RT8003 text_align #34

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
第一轮测试:有误报 (90%)

---------------------------[误报] #1

触发 Quirks Mode 的页面的 BODY 上设置 'text-align:center/right' 
,并且 BODY 内有 normal flow 的、宽度占满 BODY 
的元素时会报错。实际看不出错误效果。

原因是 BODY 的 clientWidth 在 Quirks Mode 
里是视口(除去滚动条)的宽度,而不像 Standards Mode 里是 
BODY 元素的 padding  edge 的宽度。

因此使用

var childMaxWidth = node.clientWidth - parseInt(style.paddingLeft) - 
parseInt(style.paddingRight); 时,当 node 是 Quirks Mode 下的 BODY 
元素时,默认情况下得到的结果将比预期的值要大,这个值��
�加上了 BODY 的 margin 后的值。

测试用例:
text-align-on-body-quirks.html

URL:
http://www.sogou.com/

---------------------------[误报] #2

当一个元素初始状态为 display:none 时,如果里边包含了有负 
margin 的元素,将导致判断出错。

测试用例:
text-align-invisible-and-negative-margin.html

URL:
http://finance.sina.com.cn/
http://cartoon.tudou.com/ 等 .tudou.com 共 16 个。

---------------------------[误报] #3

浮动元素占据了设置了 text-align:center 的元素的 content 
area,导致判断出错。

测试用例:
text-align-with-floats.html

URL:
http://www.china.com/zh_cn/

---------------------------[漏报] #1

绝对、固定定位元素如果没有指定坐标,在 IE6 IE7 IE8(Q) 
中也将受 text-align 的影响。但 IE6 IE7(Q) IE8(Q) 
不支持固定定位。

测试用例:
text-align-with-postioned-element.html

---------------------------[漏报] #2

设置了宽度的元素判定失效,原因是即便元素 child 的 
'margin-right' 的设定值是 auto,使用 child.getComputedStyle.marginRight 
获得到的计算值也会有一个具体值而不是 0。这点与 Firefox 
的处理(Firefox 得到的是 0)不一致。

因此使用

var childWidth = child.offsetWidth + parseInt(childStyle.marginLeft) + 
parseInt(childStyle.marginRight); 得到的 childWidth 
不是预期的结果,而是其包含块的宽度。

测试用例:
text-align-with-sized-element.html

Original issue reported on code.google.com by wangju...@beyondsoft.com on 16 Nov 2010 at 9:32

Attachments:

GoogleCodeExporter commented 9 years ago
特殊说明:多次迭代测试后结果集URL依然不足20个。
最终准确率为 100% (8/8)

说明此种情况出现明显表现差异的,在实际中并不多见。

Original comment by qianbao...@beyondsoft.com on 8 Dec 2010 at 9:33

GoogleCodeExporter commented 9 years ago

Original comment by sundongg...@beyondsoft.com on 8 Dec 2010 at 10:15

GoogleCodeExporter commented 9 years ago

Original comment by sundongg...@beyondsoft.com on 13 Dec 2010 at 3:22

GoogleCodeExporter commented 9 years ago
测试结果:
准确率 92.5%(37/40)

--------------------------[有误报]

误报,如果元素内没有文字内容并且高度为0,则不应报出问�
��
http://bbs.ngacn.cc/read.php?tid=2815343&_fp=2

----------------------------------[算法缺陷]
包含块内有浮动元素,干扰布局的情况。需要在每个节点内��
�历子树,并且有子树布局的回溯比对,算法复杂度太高,暂�
��无法解决。
http://666.89178.com/index_265.htm
http://bbs.jurong.cn/

Original comment by qianbao...@beyondsoft.com on 2 Mar 2011 at 4:05

GoogleCodeExporter commented 9 years ago
存在bug:

算法中 childWidth = offsetWidth + marginLeft + marginRight。
marginRight 值是计算后值,chrome 
正式版至第9版为止,这个值如果用户设定为 auto 
则取出的是扩充到整个父容器后的值。chrome dev 
版没有这个问题。
这导致计算 childWidth 
宽度会与容器宽度一致,检测判断失效。

这个问题的修复正在经行中。

Original comment by qianbao...@beyondsoft.com on 4 Mar 2011 at 5:25