首页 / 知识

关于javascript:强制TEXTAREA元素换行的最优雅的方法,无论空白如何

2023-04-14 10:45:00

Most elegant way to force a TEXTAREA element to line-wrap, *regardless* of whitespace

HTML Textarea元素仅在到达空格或制表符时才换行。没问题,直到用户键入足够足够的单词loooooooooooooooooooooooooooo为止。我正在寻找一种严格执行换行符的方法(例如:即使导致" loooooooooooo \\
ooooooooooong")。

alt


CSS设置word-wrap:break-wordtext-wrap:unrestricted似乎是CSS 3功能。祝您好运,找到在当前实现中执行此操作的方法。


  • quirksmode.org概述了各种方法。
  • 有一个相关的SO问题:"在HTML中,如何在破折号上断字?"
  • 在支持该功能的浏览器中,word-wrap: break-word也可能会产生所需的效果。

在textarea宽度大小处打破长字:

1)(对于现代浏览器:

1
textarea { word-break: break-all; }

2)为IE8兼容性添加:

1
textarea { -ms-word-break: break-all; }

https://msdn.microsoft.com/zh-cn/library/ms531184(v = vs.85).aspx

3)添加IE11兼容性hack:

Internet Explorer 11自动换行不起作用

1
2
3
@media all and (-ms-high-contrast:none) {
*::-ms-backdrop, textarea { white-space: pre; }
}

此代码可以在以下情况下正常工作:

-IE 11,Chrome 51,Firefox 46(Windows 7);

-IE 8,Chrome 49,Firefox 18(Windows Xp);

-Edge 12.10240,Opera 30(Windows 10);


至少有

支持非标准元素wbr

Firefox,http://developer.mozilla.org/En/HTML/Element

Internet Explorer,http://msdn.microsoft.com/zh-cn/library/ms535917(VS.85).aspx

和Opera。


最优雅的方法是使用wrap="soft"来package整个单词,或者使用wrap="hard"来按字符package,或者使用wrap="off"根本不package,尽管通常不需要最后一个wrap="off",因为浏览器会自动使用自动将其视为wrap="off"
示例:

1
<textarea name="tbox" cols="24" rows="4" wrap="soft"></textarea>

根据我的测试,当前浏览器中只有Firefox具有上述行为。因此,我猜您最好的选择是等待即将发布的Firefox 3.1解决您的问题:)


我测试了和技术。这三者在IE 7,Firefox 3和Chrome中都运行良好。

唯一没有破坏复制/粘贴的是标记。


换行元素方法用户

最新内容

相关内容

猜你喜欢