注释在IE中造成文字溢出的研究 2022-07-15 80酷酷网 80kuku.com 在蓝色论坛看到这样一篇帖子《IE中发现新BUG "重影"》,觉得很有意思。于是在想到底是什么原因造成的呢?便做了以下测试:实验代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> 1、在IE、FF中测试,只在IE出现文字溢出现象。说明:注释造成文字溢出是IE的BUG。2、去除<div 中的“float:left;”,你会发现多出来的“猪”字不见了,页面正常显示。<!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> 同样去除 <div id=runcode2 rows=15 cols=80><!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> 说明:注释造成文字溢出与区块的浮动有关。3、将注释转移到<div id=runcode3 rows=15 cols=80><!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div --><div <div type=button value=运行代码> 将注释转移到<div id=runcode4 rows=15 cols=80><!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <div --></div></body></html> 说明:注释造成文字溢出与其位置有关。(可与第2点结合理解)4、去除<div id=runcode5 rows=15 cols=80><!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> 说明:注释造成文字溢出与文字区块的固定宽度有关(无论是绝对值还是相对值)。5、增加注释的条数:当1条注释时,则多出来1个字;2条注释时,则多出来3个字;3条注释时,则多出来5个字……<!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> <!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><!-- --><div type=button value=运行代码> <!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><!-- --><!-- --><div type=button value=运行代码> <!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><!-- --><!-- --><!-- --><div type=button value=运行代码> 我们会从上面的规律中得到这样一个公式:溢出文字的字数=注释的条数*2-1,这里的字数在中文或英文数字时都成立。当溢出的文字字数大于文本的字数时,文字区块将会消失。<!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><!-- --><!-- --><!-- --><!-- --><!-- --><!-- --><!-- --><div type=button value=运行代码> 说明:溢出的字数与注释的条数有关。由1和2的测试得知:注释不要放置于2个浮动的区块之间。解决方法:1、不放置注释。最简单、最快捷的解决方法,嘿嘿……<!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <div type=button value=运行代码> 2、注释不要放置于2个浮动的区块之间。<!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div --><div <div type=button value=运行代码> 提示:您可以先修改部分代码再运行 3、将文字区块包含在新的<div></div>之间,如:<div <!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> 4、去除文字区块的固定宽度,与3有相似之处。<!DOCTYPE html PUBLIC "-//W3C//DTD 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多了一只猪</title></head><body><div <!-- --><div type=button value=运行代码> 提示:您可以先修改部分代码再运行,可能以上的分析和解决方法有不到位或者不准确的地方,欢迎讨论指正。