说得简单点,在线HTML编辑器就是在网上发帖子、写博客的那个带编辑功能的框框,可以进行图文排版等操作。
当年本菜鸟做网站的时候,曾经自己用javascript编写过一个比较简单的在线HTML编辑器,用于文本内容的排版。但是因为水平有限,很多功能都无法实现。后来有了eWebEditor,功能确实强大,但这个编辑器是个收费的软件,并且正因为功能强大,也就显得过重,一些轻量的场合不是太适用。那有没有既免费、又功能强大、还能适应轻量场合的在线HTML编辑器呢?
答案肯定是有的。这首先要感谢这些年来有一批奉献精神的程序猿们不断推进共享软件的开发,让我们得以享受他们的成果。
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。特别要说的是,头条号后台发布文章的编辑器就是用的UEditor!
百度UEditor
UEditor还有一个轻量版的,叫做UMeditor,简称UM。UM是为满足广大门户网站对于简单发帖框,或者回复框需求所定制的在线HTML编辑器。 主要特点是容量和加载速度上的改变,主文件的代码量为139k,而且放弃了使用传统的iframe模式,采用了div的加载方式, 以达到更快的加载速度和零加载失败率。UM的第一个使用者是百度贴吧,以经受贴吧每天几亿的pv的考验,功能设计应当是最优化的了。 当然随着代码的减少,UM的功能对于UE来说还是有所减少,但也有增加,比如拖拽图片上传,chrome的图片拖动改变大小等。
百度UEditor界面
xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化HTML编辑器,基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。
xhEditor完全基于Javascript开发,可以应用在任何的服务端语言环境下,例如:PHP、ASP、ASP.NET、JAVA等。可以在CMS、博客、论坛、商城等互联网平台上完美的嵌入运行,能够非常灵活简单的和您的系统实现完美的无缝衔接。
主要特点:
精简迷你:初始加载4个文件,包括:1个js(50k)+2个css(10k)+1个图片(5k),总共65k。若js和css文件进行gzip压缩传输,可以进一步缩减为24k左右。
使用简单:简单的调用方式,加一个class属性就能将textarea变成一个功能丰富的可视化编辑器。
无障碍访问:提供WAI-ARIA全面支持,全键盘精细操作,全程语音向导,提供完美无障碍访问体验,充分满足残疾人的上网需求。
内置Ajax上传:内置强大的Ajax上传,包括HTML4和HTML5上传支持(多文件上传、真实上传进度及文件拖放上传),剪切板上传及远程抓取上传。
Word自动清理:实现Word代码自动检测并清理,生成代码最优化精简,却不丢失细节效果。
UBB可视化编辑:支持UBB可视化编辑,在获得安全高效代码存储的同时,又能享受可视化编辑的便捷。
KindEditor 也是一个开源的在线HTML编辑器, 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。本菜鸟感觉这个编辑器上手比较容易,功能也很强大,界面比较友好,很适合菜鸟使用。可惜的是最近好像停止更新了,官网好象也能不正常访问。
KindEditor界面
主要特点:
快速:体积小,加载速度快
开源:开放源代码,高水平,高品质
底层:内置自定义 DOM 类库,精确操作 DOM
扩展:基于插件的设计,所有功能都是插件,可根据需求增减功能
风格:修改编辑器风格非常容易,只需修改一个 CSS 文件
兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera
严格来说,KISSY不仅仅是一个在线HTML编辑器,而是由阿里集团前端工程师们发起创建的一个开源 JS 框架,具有跨终端、模块化、使用简单的特点。里面带有HTML编辑器这个模块。
阿里的KISSY
正因为KISSY采取模块化设计,因此具有高扩展性、组件齐全,接口一致、自主开发、适合多种应用场景等优点。KISSY 除了完备的工具集合诸如 DOM、Event、Ajax、Anim 等,KISSY 还面向团队协作做了独特设计,提供了经典的面向对象、动态加载、性能优化解决方案。作为一款全终端支持的 JavaScript 框架,KISSY还 为移动终端做了大量适配和优化,搞移动web开发的可以好好研究一下KISSY的运用。
关于菜鸟手记:
菜鸟最怕就是看大神的攻略,全是术语看头就头大!本人作为一名对啥都感兴趣的资深菜鸟,潜心研究各类技术二十余年,做网站、写程序、搞美工、练书法、学画画、作文章、抓管理、装逼格,属于搞IT里面最懂美工的,搞HR里面最懂画画的,搞文字里面最懂程序的,最终一事无成,博而不精,徒留一堆手记。从菜鸟角度写手记,同样的”白”更易懂,你值得拥有!感兴趣的,请别忘点右角关注菜鸟手记。
然任何文本编辑器都可以在创建超文本标记语言文档时起作用,但一些HTML编辑器针对HTML的语法进行了优化。根据可定制性、特性和功能,我们确定了九个最佳的Windows免费编辑器。
Notepad++是最受欢迎的免费笔记应用程序和代码编辑器。默认情况下,这是Windows中提供的Notepad软件的一个更强大的版本。
Notepad++包括行号、颜色编码、提示和其他标准Notepad应用程序所没有的有用工具等功能。这些新增功能使其成为web设计师和前端开发人员的理想选择。
Komodo有两个版本:Komodo Edit和Komodo IDE。Edit是开源的,可以免费下载。这是IDE的精简版。
Komodo Edit包含许多用于HTML和CSS开发的强大功能。此外,它还允许你添加扩展以获得更多的语言支持或其他有用的功能,如特殊字符。
Komodo并不是最好的HTML编辑器。尽管如此,它的价格还是不错的,尤其是如果你使用XML构建,它确实非常出色。
Aptana Studio 3为网页开发提供了一个有趣的视角。它不关注HTML,而是关注JavaScript和其他允许你创建丰富的互联网应用程序的元素。
Aptana Studio 3可能不是最适合简单网页设计需求的。但是,如果你更倾向于web应用程序开发,它的工具集可能非常适合。
Apache NetBeans提供了一个Java IDE,可以帮助你构建健壮的web应用程序。
像大多数IDE一样,Apache NetBeans有一个陡峭的学习曲线,因为它的工作方式与其他网络编辑器不同。然而,一旦你习惯了它,你就会发现它非常有用。
IDE的版本控制和开发人员协作功能对于在大型开发环境中工作的人员来说非常方便。如果你编写Java和网页,这是一个很好的工具。
Microsoft Visual Studio Community是一个可视化IDE,可帮助web开发人员和其他程序员为web、移动设备和桌面创建应用程序。你以前可能使用过它,但Visual Studio Community是该软件的最新版本。
微软为专业和企业用户提供免费下载和付费版本(包括免费试用版)。
Microsoft Visual Studio Code是一款免费的仅限编码的应用程序,是Visual Studio套件的一部分,但它是独立的。它是一个优秀的独立代码编辑器,适用于数十种编码和脚本语言。
BlueGriffon是一系列网页编辑器中的最新一个,从Nvu开始,发展到Kompozer,现在在BlueGriffn达到顶峰。Gecko是Firefox的渲染引擎,它为它提供了强大的功能,因此它很好地展示了如何在符合标准的浏览器中渲染工作。
它可用于Windows、macOS和Linux以及各种语言。
这是唯一一个真正的所见即所得编辑器列入这个列表。因此,它对初学者和小企业主更具吸引力,他们希望以可视化的方式工作,而不是以代码为中心的界面。
Bluefish是一个功能齐全的HTML编辑器,适用于各种平台,包括Windows、macOS和Linux。
值得注意的功能包括代码敏感的拼写检查、多种语言(HTML、PHP、CSS等)的自动完成、代码片段、项目管理和自动保存。
Bluefish主要是一个代码编辑器,而不是专门的网络编辑器。这意味着它对使用HTML以外的语言编写的web开发人员具有灵活性。然而,如果你是一名设计师,想要更多以网络为中心或所见即所得的界面,Bluefish可能不适合你。
Eclipse是一个复杂的开发环境,非常适合在各种平台和语言上进行大量编码的人。它是在插件设计中构建的,所以如果你需要编辑某些内容,请找到合适的插件并开始工作。
如果你创建复杂的web应用程序,Eclipse有许多功能可以使你的项目更容易构建。它提供Java、JavaScript和PHP插件以及一个面向移动开发人员的插件。
CoffeeCup HTML编辑器有一个免费版本和一个付费完整版本。免费产品是一款不错的产品,但该平台的许多最佳功能都需要你购买完整版本。
CoffeeCup还提供了一个名为“响应式网站设计2”的升级,支持响应式网页设计。此版本可以与编辑器的完整版本一起添加到捆绑包中。
许多网站将其列为免费的所见即所得编辑器。然而,当我们测试它时,它需要购买CoffeeCup Visual Editor才能支持所见即所得。免费版本只是一个非常好的文本编辑器。
这个编辑器在网络设计师中的得分与Eclipse和Komodo Edit一样高,但在网络开发人员中的得分没有那么高。然而,如果你是网络设计和开发的初学者,或者你是一个小企业主,那么这个工具比Komodo Edit或Eclipse有更多适合你的功能。
多人可能都用过Web编辑器,比如Ckedit等,除了Word等本地编辑器外Web编辑器也是最常用最方便Web内容来源。这些在线编辑器的一个短板限制很多,不能实时反馈在线效果。本文虫虫给大家介绍一种很简单的无限制在线Html编辑器,实现所写即所得UI和样式实时刷新,JS代码也能进行热加载执行重新渲染,而且这些实现都非常简单,只用到了很少的html和css代码。
要使Html可以编辑实际上很简单只要一个body标签就足矣。contenteditable这个body属性可能鲜为人知,实际上它的功能就是实现Html文档可编辑。我们新建一个Html文档(Cc.html),然后将如下代码复制粘贴到文档中:
<body contenteditable="true"></body>
通过浏览器打开这个文档,怎么样,神奇的事情发生了把?
你可以在这个页面任意输入文本甚至还可以粘贴图片。(兼容基本上所有的浏览器,IE也可以)。还可以支持Ctr+Z撤销和重做。
我们知道<div>…</div>和<p>…</p>标签内的文字都会在页面显示,而<script>…</script>和<style>…</style>中的都是引用的前端脚本的代码(JS)等需要通过浏览器引擎执行渲染显示出来的,那么这些代码是不是可以在显示出来呢?实际上在大多数浏览器只是通过CSS样式隐藏起来的,我们通过重写在div>…</div>中增加script, style { display: block; }即可:
<body>
<style>
script, style { display: block; }
</style>
<script>
console.log("Hello Chongchong!");
</script>
</body>
通过将其粘贴到html文件并在浏览器中打开它,显示如下:
而且,我们也可以将这个页面也设置为contenteditable,并且<style></ style>增加样式显示,比如我们修改字体的大小为20pt,颜色为绿色:
<body contenteditable="true">
<style>
script, style { display: block;font-size: 20pt;color: green}
</style>
<script>
console.log("Hello ChongChong!");
</script>
</body>
现在我们可以,通过在线编辑style{}的内容,让页面的呈现实时变化,比如字体再增加10pt,颜色变成蓝色。
注意,输入时候内容会实时变化的,比如你修改20pt为30pt途中,你字体会变成2,很小很小,继续删除2就会恢复成默认正常默认,你不用理会继续输入30字体就会变成30pt,其他参数也类似。
该方法可以实时刷新样式显示<style></ style>标签,对于JS代码,由于其只会在页面加载时候执行一次,你可以修改<script>…</script>内容,但是不能实时执行生效。
上面我也说,JS代码的修改需要重新加载才能执行。为了实现重新加载,我们首先使用简单的按键(Shift+enter)触发重新加载的方法:
<body contenteditable="true">
<style>
script, style { display: block;font-size: 20pt; color: green}
</style>
<script>
//alert("Hello ChongChong!");
document.onkeydown = function(e) {
var key = window.event ? event : e;
if (key.shiftKey && key.keyCode == 13) {
eval(window.getSelection().focusNode.parentNode.innerHTML);
}
};
</script>
</body>
通过浏览器打开,并且编辑去掉//alert("Hello ChongChong!")前面的//注释,然后按键shift时按Enter键。
结果如上图就可以弹出一个消息窗口。
通过上面的方法我们实现了一个可编辑上面在线编辑器。在前面代码的基础上,我们提供一个基础的模版供大家使用,完整代码如下:
<body contenteditable="true" spellcheck="false">
<title>editor</title>
<style>script,
style {
display: block;
white-space: pre-wrap;
background-color: #eeeeee;
border: solid;
border-radius: 10px;
padding: 20px;
}
body {
font-family: Menlo, Monaco, monospace;
font-size: 12pt;
tab-size: 4;
}
script.success {
background-color: #ccffcc;
border: solid, #00cc00;
}
script.error {
background-color: #ffcccc;
border: solid, #ff1111;
}
</style>
<script type="text/javascript" class="success">
//alert("Hello Chongchong!");
document.onkeydown = function(e) {
var key = window.event ? event : e;
var node = window.getSelection().focusNode;
if (key.shiftKey) {
if (key.keyCode == 13) {
node.parentNode.classList.remove("error");
node.parentNode.classList.remove("success");
try {
eval(node.parentNode.innerHTML);
node.parentNode.classList.add("success");
} catch (e) {
node.parentNode.classList.add("error");
}
return false;
}
} else {
if (key.keyCode == 13) {
document.execCommand("insertHTML", false, "\n");
return false;
}
if (key.keyCode == 9) {
document.execCommand("insertHTML", false, "\t");
return false;
}
}
}
</script>
</body>
将上面代码保存为html,然后用浏览器打开就实现了一个简单的在线html编辑器。
该在线编辑器模版还非常简陋,如果能增加语法高亮和自动完成等一些功能可能很好,但是这是很大工作量,有兴趣的可以尝试着做下。也可以通过引入一些第三方的库来做下,比如使用微软的language-server-protocol 库来实现自动完成功能。
至于语法高亮,一般做法是将所有内容填充到标签中并对其进行着色(大多数其他基于html的编辑器都这样做),但是这样会破坏自动刷新和热加载功能的简单性。
你可能还希望处理实际内容,而不仅仅是编辑本身。这个简单,只需在contenteditable body中添加另一个元素,该操作可以通过JS脚本实现该操作。还可以添加更多元素,例如一个按钮或者只是通过修改快速HTML框来实现。这些都可以在提供的模版的基础上按需增加修改。
本文我们在contenteditable属性的基础上实现了,在线Html的编辑器实现内容和样式的实时更新、实现了JS代码的热加载。虽然此在线编辑器还非常简陋,但是以此作为一个想法和基础"抛砖引玉",希望大家可以实现一个功能完善,更加实用的在线编辑器。
*请认真填写需求信息,我们会在24小时内与您取得联系。