`
shuany
  • 浏览: 253884 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

转:HTML编辑器的回车换行问题解决方案

阅读更多

在html编辑器中,一般默认按回车总是出现<p></p>,当然按shift+enter可以是直接加<br>,而很多人希望按回车就是<br>换行而不是分段。

一直有人问我这个问题,而我没有写代码测试就认为在onkeydown里面判断 event.keyCode==13就可以判断并解决,而后来发现似乎并没有人能用这种方法解决成功。对此表示歉意!为此,仔细研究了一下,发现可以有两 种解决方法,但是都不是很完美,不过已经基本可以满足需要了:

1.在初始化编辑器内容的时候,加上"<div></div>"

这样回车的时候编辑器会直接生成"<div></div>"而不会生成<p></p>,就可以只是换行而不换段了,如下所示:

<SCRIPTLANGUAGE="javascript">

<!--functioniniteditor(){

varL_DEFAULTHTML_TEXT="<DIV></DIV>";

varsz=""sz+="< BODYONCONTEXTMENU=\"returnfalse\">"+L_DEFAULTHTML_TEXT+"</BODY& gt;"idEditbox.document.designMode="on"//编辑模式打开 idEditbox.document.write(sz)

//以下代码只是辅助方便看编辑器源代码的

idEditbox.document.attachEvent("onkeyup",readsource);

idEditbox.document.attachEvent("onkeydown",readsource);

}//看源代码

functionreadsource(){

document.all.source.value=idEditbox.document.body.innerHTML;

}

//-->

</SCRIPT>

<BODYonload="initeditor()"><iframewidth="500"height="400"id="idEditbox"></iframe>

<BR>

<INPUTTYPE="button"value="查看源代码"onclick="readsource()">

<BR>

<TEXTAREANAME="source"ROWS="20"COLS="60">

</TEXTAREA>

</BODY>

不足:

这种方法有个bug就是在编辑器中添加一些内容后,全选(ctr+A)然后删除所有内容(这样就把<div></div>也删除了),重新输入内容后回车就还是会产生<p></p>

2.直接在onkeypress里面处理

我们可以在onkeypress里面直接出来,但判断event.keyCode==13也就是是回车的时候我们直接插入<br>标签,这样无论怎么样都不会出现问题的了。以下是代码示例:

<SCRIPTLANGUAGE="javascript">

<!--

functioniniteditor()

{

varsz=""sz+="<BODYONCONTEXTMENU=\"returnfalse\"></BODY>"idEditbox.document.designMode="on"idEditbox.document.write(sz)idEditbox.document.onkeypress=fnKeypress

}

functionfnKeypress()

{

//注意:如果焦点不在编辑器内该函数就不起作用了;

varev=idEditbox.event;

if(ev.keyCode==13)

{

insertHTML("<br><!---->");//不知道是我浏览器问题还是其他问题,只插入<br>标签光标不换行,必须附加点其他标签,可以最后一起删除之returnfalse;

//这样回车就是等于失效了,不会加上讨厌的<p>标签}

}

//在光标位置插入html

functioninsertHTML(html)

{

varsel=idEditbox.document.selection;

if(sel!=null)

{varrng=sel.createRange();

if(rng!=null)rng.pasteHTML(html);

}

}

//查看代码

functionreadsource()

{

document.all.source.value=idEditbox.document.body.innerHTML;

}

//-->

</SCRIPT>

<BODYonload="initeditor()">

<iframewidth="500"height="400"id="idEditbox"></iframe>

<BR>

<INPUTTYPE="button"value="查看源代码"onclick="readsource()"onfocus="idEditbox.focus()">

<BR>

<TEXTAREANAME="source"ROWS="20"COLS="60">

</TEXTAREA>

</BODY>

不足:

1).insertHTML("<br><!---->");会产生垃圾代码“<!---->”;

2).要保证焦点必须在编辑器中才能响应编辑器的onkeypress事件

因时间关系,本示例程序并未给出焦点不在编辑器中的处理方法

分享到:
评论

相关推荐

    html编辑器的回车换行问题解决方案

    总之,HTML编辑器中的回车换行问题可以通过预先插入`&nbsp;`或监听`onkeypress`事件并在回车时插入` `标签来解决。虽然这些方法存在一些不足之处,但在大多数情况下,它们足以满足用户对简单换行的需求。在进行...

    在线编辑器中换行与内容自动提取

    在创建一个在线编辑器时,用户习惯于使用回车键进行换行,但在HTML中,回车并不直接等同于` `标签,而是通常转化为`&lt;p&gt;`或`&lt;div&gt;`这样的块级元素。这是因为这些元素能够更好地管理文本的布局和样式。然而,这可能...

    解决pycharm回车之后不能换行或不能缩进的问题

    - **不能正常换行**:在覆盖模式下,尽管按下了回车键,但编辑器可能不会创建一个新的空行,而是停留在当前行的开头。 - **无法进行缩进**:同样的,在覆盖模式下,即使尝试通过Tab键来缩进代码,也可能无法实现...

    HA_4EmEditor Pro v7.00.4 汉化版 可以使用转义符替换回车的编辑器

    EmEditor Pro是一款强大的文本编辑器,专为程序员和高级用户设计...无论是日常文档处理,还是编程开发,这款编辑器都能提供高效、便捷的解决方案。下载压缩包中的汉化版,即可开始享受这一专业级文本编辑器带来的便利。

    C语言编写的文本编辑器(实验报告,内附源码和解释)

    #### 上机调试中出现的问题及其解决方案 1. **输入问题**:开始时,输入的字符无法显示在屏幕上。解决方法是添加将字符输出到屏幕上的逻辑。 2. **删除问题**:当一行被完全删除后,光标不会自动移动到上一行。解决...

    notepad++批量将换行符换成逗号

    此外,如果文件中每行数据本身就包含逗号,且我们仍需要进行合并操作,Notepad++同样提供了便捷的解决方案。在这种情况下,我们首先手动选择所有需要合并的行,或者可以利用Notepad++的编辑功能来简化这一过程。按下...

    c++控制台多文本编辑器

    这里我们将深入探讨如何构建这样的编辑器,以及可能遇到的问题和解决方案。 首先,控制台多文本编辑器的基础是能够处理和显示文本。在C++中,我们可以使用`std::string`来存储文本,通过`std::cout`进行输出,使用`...

    自动去换行.rar

    总的来说,“自动去换行.rar”提供的解决方案针对的是PDF到Word转换过程中产生的一个普遍问题。通过使用专门的去换行工具,用户可以更高效地处理文本,保持文档的整洁和一致性。在IT领域,这种针对性的工具是解决...

    typora重点知识点总结 typora超详细教程攻略学习.docx

    Typora常见问题与解决方案 Typora资源与学习建议 一、Typora简介与基础操作 重点详细内容知识点总结 Typora简介:Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,所见即所得,无需切换预览模式。 安装与...

    TinyMCE syntaxhl插入代码后换行的修改方法

    而问题中的解决方案是在插件处理代码插入后,通过在JavaScript代码中调整逻辑来实现这一功能。 具体操作如下: 1. 找到插件的JavaScript文件,路径为`plugins\syntaxhl\js\dialog.js`。 2. 在文件的第41行附近,...

    Linux 中删除文本中的回车字符的方法

    Windows使用回车换行(CRLF,即CR+LF)作为一行的结束,而Linux只使用换行(LF)作为行结束。这就可能导致在Linux下处理Windows文本文件时出现不兼容性问题。不过,有几种简单的方法可以消除这些回车字符。 1. **...

    后台csv文件上传不成功原因分析.doc

    本文旨在深入分析后台CSV文件上传失败的可能原因,并提供相应的解决方案,以帮助电商运营人员有效解决此类问题。 #### 常见问题及原因分析 1. **文件权限问题** - **问题描述**:上传失败可能是由于目标服务器上...

    解决 jupyter notebook 回车换两行问题

    对于这些问题,通常可以通过查阅文档、更新相关软件、调整配置或者搜索社区解决方案来找到答案。Jupyter Notebook作为一个强大的交互式计算环境,它的灵活性和可定制性使得许多问题都能通过适当的方法得到解决。保持...

    经验记录1

    这些知识点涵盖了从操作系统的基本操作,到文本编辑器的高级功能,再到购买电子产品的实用策略,以及输入法和编码格式的理解,都是IT用户日常可能遇到的问题和解决方案。了解这些知识能帮助用户更好地管理和使用他们...

    linux运维常见的22个故障排查和解决方法

    2. **替换特殊字符**:如果希望保留原来的脚本文件,可以在Linux环境下使用Vi编辑器或其他工具来替换这些特殊字符。 - 使用命令`vi:%s/r//g:%s/^M//g`(其中`^M`需要通过按下`Ctrl+v`和`Ctrl+m`组合键输入)来移除...

    EmEditor Pro(文本编辑器) V15.9.0 绿色中文版

    EmEditor提供了很好的解决方案,只需要勾选上“总是启用一页垂直滚动”,EmEditor便一直有一空页,让你的编辑总是 在上面或中间,而且没有产生多余的空行。 2)“水平格线”。选中后看起来像这样: 如果您喜欢可以...

    UEditor编辑文章出现多余空行问题的解决办法

    本文将详细讲解出现这一问题的原因,并提供相应的解决方案。 首先,需要了解的是,UEditor是一个基于Web的富文本编辑器,它允许用户在网页上进行所见即所得的文字编辑,并支持将编辑后的内容保存到服务器上。在使用...

    unity,windows平台编码问题

    - 解决方法是使用Unitron或其他文本编辑器的“转换换行符”菜单命令来修正。 2. **MonoDevelop报错**: - 在保存文件时出现错误提示:“E:\BillGameframe\unity\Netmanager\Netmanager.cs”文件的换行符与项目...

    FCKEditor试用指南

    - 解决方案包括使用正确的编码格式等。 4. **创建中文名目录会出现乱码** 5. **引用中文名文件的图片不能正常显示** - 确保路径正确并且使用了正确的字符集。 6. **控件允许上传的文件的类型** - 示例代码: ...

    DotNetTextBox V6.0.10 商业版 下载 (已知最新)

    2)改良了编辑器回车换行的方式,旧版本按回车后以段落换行(&lt;P&gt;&lt;/P&gt;)的方式现在已更改为换行,好处是按回车换行后行与行的间距不会过大了(可用新增的NewLineMode属性设置为P恢复为段落换行)! 3)改良了代码状态下编辑框...

Global site tag (gtag.js) - Google Analytics