TEXTAREAs每次键入一个字符时自行滚动(在IE8上)

Jus*_*ant 15 css mediawiki textarea internet-explorer-8

IE8有一个已知的错误(每个connect.microsoft.com),在TEXTAREA元素中键入或粘贴文本将导致textarea自行滚动.这非常烦人,并且出现在许多社区网站中,包括维基百科.责备是这样的:

  1. 使用IE8打开下面的HTML(或者使用维基百科上的任何长页面,它们会出现同样的问题,直到他们修复它)
  2. 浏览器全屏大小
  3. 将几页文本粘贴到TEXTAREA中
  4. 将滚动条移动到中间位置
  5. 现在在textarea中输入一个字符

预期:没有任何反应实际:滚动单独发生,插入点最终靠近textarea的底部!

下面是摄制HTML(也可以在这里看到这个活的网站:http://en.wikipedia.org/w/index.php?title=Text_box&action=edit)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" ><body>
 <div style="width: 80%">
   <textarea rows="20" cols="80" style="width:100%;" ></textarea>
 </div>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过强制网站进入IE7兼容模式来避免这种情况,但是什么是解决这个bug的最佳方法,同时尽可能减少副作用?

Jus*_*ant 17

我最后浪费了很多时间试图找出答案,所以我想我会挽救其他人回答的麻烦.诀窍是在TEXTAREA元素上为COLS属性使用非常大的值.像这样

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<body> 
<div style="width: 80%"> 
<textarea rows="20" cols="5000" style="width:100%;" ></textarea> 
</div> 
</body> 
</html> 
Run Code Online (Sandbox Code Playgroud)

我还看到一个解决方法在线使用非比例width再百分比max-widthmin-width,但比其他解决方法上面(的礼貌影响力更罗斯),这似乎在所有浏览器IE6,包括工作.

更多细节:经过一个小时的调查,这个问题似乎是由IE8处理textarea元素上"COLS"属性和"width"样式之间的冲突引起的.如果宽度CSS宽于默认宽度(字体宽度x cols),则在添加文本并滚动文本区域时,IE8会感到困惑.相反,如果宽度CSS小于从cols属性派生的默认宽度,那么一切正常.

cols和width之间的微妙依赖性可能是使问题如此复杂的原因,因为相同的页面会根据cols与width的比例而中断或不中断.问题中的HTML实际上是在一个大型浏览器窗口上责备错误,并且不会在一个小窗口上重现错误!

  • 由于问题的答案是第二部分,所以上述内容可能对某些人有用. (3认同)