在线编辑器中换行与内容自动提取
来源:互联网 发布:淘宝双11如何报名 编辑:程序博客网 时间:2024/05/01 13:16
这几天在写在线编辑器,碰到个问题,当使用回车换行时不是你希望的<br>而是<p></p>对或是<div></div>对。使用google搜索,在网上找不到满意的答案。有的是使用“return false”解决了ie的插入<br>问题,但是firefox并没有解决。而且这个问题连fckeditor都没解决。呵呵,不知是否有意为之。
可能看了以上的描述还不太明白什么问题。我们做个实验,打开fckeditor切换到源码模式输入<div>test test test test test test</div>,再切换回设计模式,然后在这句的任意地方输入个回车,比如在第3个test后,你会发现源码内得到的是<div>test test test </div><div>test test test</div>,并且如果是<div style="">这形式,自动生成的也是这种形式,这样会增加许多无用代码,而且这问题在我所能找到的在线编辑器都有。
为什么一定要使用<br>换行呢?简单,而且灵活不像<p>换行空行间距大,需要大空行多输入几个回车就行。而且假如使用自动提取文章部分内容的话不怕tag没有闭包(可能'<br>'别切割,但只有很少的内容,显示不正常。而且'<br>'被切割中的概率很低,除非使用连续多个<br>,当然这也很容易修补)。这样在使用自定义层时可以使用<p>,好处是不怕被切割而使得tag没有闭包。这样可以避免使用<div>。如果使用<div>的话自动截取的文章内容而使得有个<div>没有闭包(如果一个div内的内容多,这情况很容易出现),将会对整个页面效果产生不好的影响。而去除tag,再截取内容的话也不是一个好选择,比如csdn的blog就是先去除了tag,然后截取文章,这个效果大家都看到了,肯定不好。当然如果要保证tag的完整,比如img,a还有些工作要做,那也会简单得多。记住通过这样处理后在截取文章内容存入数据库还要对用户可能使用源码编辑的<div>标签替换为<p>标签。
到底如何能得到<div>test test test <br>test test test</div>呢?
呵呵,问题的解决其实也很简单。那就是屏蔽浏览器的默认动作,而不是return false(网上搜得到这种方式,但这只能解决ie下的问题)。
使用onkeydown事件绑定函数(兼容ie,firefox)
function cancelEnter (e)
{
var keyCode = e.charCode || e.keyCode;
if(keyCode == 13)
{
// 此处使用插入字符函数加上<br>(当然也可以是其他)比如document.execCommand(cmd, false, '<br>');
// 注意ie不支持这个command
// 由于实现可能是iframe或div代码有所不同,看您的具体情况(要兼容ie,firefox这里也一定需要兼容)
// 在网上也能搜索到代码就不多说了
if(e.preventDefault) e.preventDefault(); // 禁止浏览器默认动作(这里是关键)
else e.returnValue = false;
}
}
这样就可以得到<div>test test test <br>test test test</div>。
- 在线编辑器中换行与内容自动提取
- td中内容自动换行
- table中内容自动换行
- table中td内容自动换行
- asp.net中Label内容自动换行
- 【收集】td中内容自动换行
- 控制网页中表格内容自动换行
- table中td内容自动换行
- <td>标签中实现内容自动换行
- div中内容不自动换行
- textview中自动换行显示文本内容
- 网页内容自动换行
- 超出内容自动换行
- 网页内容自动换行
- td内容自动换行
- DIV内容自动换行
- div内容自动换行
- ueditor文本超过编辑器宽度不换行问题(使pre标签内容自动换行)
- 你参加2009技术英雄大会了吗?
- 还是乱码问题--js传参数乱码
- 用C#调用Windows API和其它进程通信
- 速食文化,害人不浅,今天接触了java,总想今天就动动手
- DB2 常用命令
- 在线编辑器中换行与内容自动提取
- 联想lenovo的android答卷,oPhone最新真机图片与UI截图
- 又看见BP机了
- 简单分析SQL注入中对汉字的猜解
- 指针易见的错误
- 学习Enterprise Library
- 查找两个表中主键一样但其它字段数值不一样的记录
- 日本大阪失业电脑专家饿死家中
- 数据库简单学习与应用