`
yiminghe
  • 浏览: 1460439 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

长字串换行问题

阅读更多

  很久没用过 ,textarea 了,一般就是用用  htmleditor 这种控件 ,而这次的动画编辑,要在web client 编辑资源文字,而资源文字要用在不能显示html的地方,如彩信 ,于是就用 textarea 了 ,另外要做一个 预览 各个帧的界面 ,结果遇到了不少问题。

 

 

 

 

 

 

 

 

1.textarea 编辑后 提交到服务器 ,服务器确认后再传回,里面的  < > 已被 extjs 自动编码为 &lt; &gt;

 

frame_edit.form.submit({
                            url : 'setFrame.jsp',
                            success : function(form, action) {
//  textResourceText 输 < ,服务器传过来 <   //action.result.data.textResourceText变成 &lt;   	
 //需要自己    Ext.util.Format.htmlDecode                        		
action.result.data.textResourceText=Ext.util.Format.htmlDecode(
action.result.data.textResourceText);
                                

 

 

2.textarea 输入的内容 换行空格等要在 web 上 原样显示 ,有两个方法

 

 

      1. 运用 pre 标签 (老式的html标签,但是具有广泛的兼容性) 将 textarea 输入的内容 放在 <pre> </pre> 中间  ,但这样的话 换行只有在 textarea 输入的内容 换行的时候才会换行 ,不会随屏幕宽度自动换行。


     2.css 指定 white-space:pre   如 <p style="white-space:pre;"></p>  ,但是ie6 及其以下版本不支持,效果同 pre 标签


     3.replace(/\n/g,'<br/>').replace(/\s/g,'&nbsp;') 一方面 换行在 textarea 输入的内容 换行的时候会换行 ,另一方面 会随屏幕宽度自动换行。 但是若指定宽度,并且遇到了长英文字符,如  email:yiminghe@xxxxxxxxxxx.com 则横向滚动条又会出现了。

 

 

 

     上述3个方法  都要先将 < ,> ," ,& 转义 ,用 Ext.util.Format.htmlEncode 即可


3 换行问题:


             3.1 : 在 IE 和 Safari 1.3+ 下相对比较容易解决,使用 CSS 属性 word-wrap: break-word; word-break:break-all;

             3.2 : 而 Firefox 和 Opera 浏览器 ,无法识别 word-wrap: break-word; 和 word-break:break-all; 属性。可以通过脚本给连续字符的每个字符之间 插入 \u8203 的字符(该字符在非 IE 浏览下不占据空间)或者 <wbr/>建议换行标签 ,使连续变为了不连续,达到了换行的效果。

 

扩展一下 (2009-11-25 写了简洁版本:)

 

允许指定超过了多少字长添加建议换行标志

 

/**
*每count长字串间加入<wbr/>建议换行标志
*@param str {string} 长字串
*@param count {int} 
*@return {string} 加好建议换行标志的字符串
*/
function breadWord(str,count) {
	//超过count需要换行的英文符号,不包括, .等标点
	var matchRe=new RegExp("[a-zA-Z!@#$%^&*_+=\\-]{"+count+",}","g");
	var sRe=new RegExp(".{"+count+"}|(?:.{1,"+count+"}$)","g");
	return str.replace(matchRe,function(m){
		return m.match(sRe).join("<wbr/>");
	})
}

alert(breadWord("yiminghe@xxxx.xxxxx.xxxxx-cn",5))
 

 

 

 

 

 


综合来说 ,还是不如 htmleditor 方便 ,文本编辑确实还是能用 htmleditor就用 htmleditor,更好就用 fckeditor 了



附录换行问题 :http://www.hedgerwow.com/360/dhtml/css-word-break.html

 

function breakWord(dEl){
        
        
        if(!dEl || dEl.nodeType !== 1){
          
          return false;
        
        } else if(dEl.currentStyle && typeof dEl.currentStyle.wordBreak === 'string'){
          
          //Lazy Function Definition Pattern, Peter's Blog
          //From http://peter.michaux.ca/article/3556
          
          breakWord = function(dEl){
            //For Internet Explorer
            dEl.runtimeStyle.wordBreak = 'break-all';
            return true;
          }
          
          return breakWord(dEl);
         
        }else if(document.createTreeWalker){
       
          //Faster Trim in Javascript, Flagrant Badassery
          //http://blog.stevenlevithan.com/archives/faster-trim-javascript
          
          var trim = function  (str) {
            str = str.replace(/^\s\s*/, '');
            var ws = /\s/,
            i = str.length;
            while (ws.test(str.charAt(--i)));
            return str.slice(0, i + 1);
          }
          
          //Lazy Function Definition Pattern, Peter's Blog
          //From http://peter.michaux.ca/article/3556
          
          breakWord = function(dEl){
            
            //For Opera, Safari, and Firefox
            var dWalker = document.createTreeWalker(dEl, NodeFilter.SHOW_TEXT, null, false);
            var node,s,c = String.fromCharCode('8203');
            while (dWalker.nextNode())
            {
              node = dWalker.currentNode;
              //we need to trim String otherwise Firefox will display 
              //incorect text-indent with space characters
              s = trim( node.nodeValue ) .split('').join(c);
              node.nodeValue = s;
            }
            return true;
          }
          
          return breakWord(dEl);
          
          
        }else{
          return false;
        }
      }
  • 大小: 77.9 KB
  • 大小: 37.6 KB
  • 大小: 56 KB
分享到:
评论

相关推荐

    Python-biglistofnaughtystrings淘气字串大列表收集了用户输入时经常出错的字串包含py脚本和JSON格式数据

    "big-list-of-naughty-strings"中还包含了一些用于测试边界条件的字符串,如全零字串、全空字符串、极长字符串等,这些都是常见的性能和内存问题的来源。 5. **Python特定问题**: 该项目中的Python脚本提供了...

    Lephone Loczlize Plus 1.06 中文免费版 PE 字串替换器.zip

    对于内含回车换行的字串,使用替换方式进行处理,如下: 对于内含回车换行的字串,使用替换方式进行处理,如下: 回车 替换成 \r 换行 替换成 \n \ 替换成 \\ ” 替换成 \” Tab 替换成 \t “翻译新版本”时,既...

    缅甸语字串_Settings模块

    4. **布局适应**:缅甸语的字符宽度和高度可能不同于其他语言,因此可能需要调整布局以确保文本正确显示,避免换行或截断。 5. **测试和验证**:在真实设备或模拟器上运行,确保缅甸语环境下所有设置界面正常工作且...

    將字串以一定長度或特定字母作分隔後存入table.doc

    标题中的"將字串以一定長度或特定字母作分隔後存入table.doc"涉及到了字符串处理和文件操作两个核心知识点。下面将详细阐述这两个方面的内容。 **一、字符串处理** 1. **字符串分割**: 字符串分割是指将一个长字符...

    Java生成PDF工具包

    Java生成PDF工具包是一种在Java开发环境中用于创建和编辑PDF文档的库,它解决了中文字符显示和自动换行的问题,确保了PDF文档的格式正确性和阅读流畅性。在这个经过源码修改的版本中,它特别优化了对中文字符的支持...

    C++使用最短路径匹配算法实现中文文本分词源代码+实验报告+用户手册

    用户输入后按下换行,程 序即开始运行。界面如下所示: 请输入待切分的字串: &gt;&gt;&gt; …… 3. 片刻后,程序会输出分词结果。界面如下所示: 分词结果如下: …… 4. 之后,程序会让用户输入数字,以选择是否需要继续...

    Makefile中常用的函数

    功能:查找中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式,如果匹配的话,则以替换。 返回:函数返回被替换过后的字符串。 示例:$(patsubst %.c,%.o,x.c.c bar.c)把字串“x.c.c bar.c...

    C语言上机实验 | 《定义函数strmcpy(s,t,m),实现字符串复制》

    【问题描述】 字符串复制。输入一个字符串t和一个正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。要求用字符指针定义并调用函数strmcpy(s,t,m),它的功能是将字符串t中从第m个字符...

    NumCsvOpener:避免Excel开启CSV时截掉左补零的小工具

    而是透过小工具选取档案,小工具会读取CSV内容,将所有栏位内容重新包装成="…"格式,全部当成字串,再另存成*.fixed.csv(修正版),最后启动Excel开启修正后的CSV,避开左补零被截除的问题。 2015-08-09 加入语系...

    SUDT AccessPort PC机串口(RS232)调试、监控的软件。

    3.增加Hex格式字串的发送、导出功能,导出功能支持文件保存以及剪贴板复制。 4.Rx接收区增加自动换行功能。 5.工具栏增加Terminal、Monitor模式切换按钮。 6.增加字体设置功能。 7.Monitor菜单下增加端口刷新按钮,...

    蓝牙传输协议1

    6. **CR(Carriage Return)**(数据位16):回车符,用于换行,常与LF(Line Feed)一起使用以表示行结束。 7. **LF(Line Feed)**(数据位17):换行符,同样用于标记数据帧的结束。 在提供的接收数据例子中,...

    计算机等考一级知识辅导:金山WPS97使用技巧1.docx

    在网页制作或者文本编辑中,有时候我们需要确保每个汉字后面都有一个空格,以便让文章在自动换行时保持良好的阅读体验。在WPS97中,我们可以通过以下步骤实现这一需求: 1. 首先,按下`Ctrl+Home`组合键,将光标...

    linux的more命令.docx

    * `+/`:在每个文件显示前搜寻该字串(pattern),然后从该字串之后开始显示。 * `+num`:从第 `num` 行开始显示。 命令示例 1. `more -s testfile`:逐页显示 `testfile` 之档案内容,如有连续两行以上空白行则以...

    12个Flex常用功能代码

    9. **清除字串右侧空格**:`RTrim`函数类似,从字符串末尾开始遍历,移除所有尾部的空格、回车、换行和制表符。 10. **清除字串左右的空格**:`Trim`函数结合了`LTrim`和`RTrim`的功能,先移除左侧空格,再移除右侧...

    discuz编码规范

    - **定长与变长表**:根据数据特点选择合适的表结构,提高检索速度。 - **运算与检索**:优化查询逻辑,减少不必要的计算。 - **结构优化与索引优化**:合理创建索引,避免过度索引,平衡查询速度与写入效率。 - **...

    趣谈Unicode、Ascii、utf-8、GB2312、GBK等编码学问_.docx

    在 DBCS 系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必需要留意字串里的每一个字节的值,假如这个值是大于 127 的,那么就认为一...

    WINCVS和CVSNT安装包

    类似 -ko 选项,并阻止换行字符的转换,这种转换是因为换行符在仓库(只是换行) 的形式与客户机使用的操作系统不同。对有些系统,比如 Unix,换行符就是行中止符,这样就和 -ko 没什么区别。关于二进制文件的更多...

    MTK MMI 培训 教程

    5. **字串资源**:这部分详细讲述了如何管理和本地化字符串资源,使得应用能支持多语言环境。 6. **菜单资源**:菜单是用户界面的重要组成部分,这一章可能会讨论如何创建和设计菜单,包括菜单项、子菜单和菜单事件...

    JavaScript 技巧雜匯.pdf

    让英文字串超出表格宽度自动换行 - **`word-wrap:break-word;word-break:break-all;`**:设置文本溢出后的换行规则。 ##### 34. 透明背景 - **`&lt;IFRAME src="1.htm" width=300 height=180 allowtransparency&gt;&lt;/...

Global site tag (gtag.js) - Google Analytics