首页 > Web开发 > 详细

在线HTML编译,文本关键字高亮显示,富文本编辑实现大概思路

时间:2016-01-11 11:57:47      阅读:159      评论:0      收藏:0      [点我收藏+]

????最近被安排做了一个HTML在线编译功能,也利用这个机会对HTML在线编译,关键字高亮,富文本编辑器等的实现做了一些比较表面的研究,做简要记录,以便再次遇到作为参考。

????在线HTML编译

????首先需要一个能够输入及展示HTML代码的文本框,若只是显示普通HTML代码,使用<textarea>即可(w3school在线编译功能即如此)。若还要在其中实现标签及关键字高亮,则使用<div>(百度在线编译功能),这里需要将<div>设置为contentEditable="true",将其设置为可编辑状态。

????使用<textarea>实现,textarea为代码输入框,旁边需要一个iframe来展示代码运行结果。

????核心JS代码:

????function run(){

var iframeContent=$(".mysource").val();

var iFrame=document.getElementById("container").contentWindow;

iFrame.document.open();

iFrame.document.write(iframeContent);

iFrame.document.close();

}

????var iframeContent=$(".mysource").val()来获取textarea内容;

????var iFrame=document.getElementById("container").contentWindow得到iframe对象;

????iFrame.document.write(iframeContent)将textarea内容写入iframe得到结果。

????若涉及到从外部向textarea导入代码,可考虑设置不可见iframe在textarea之前,iframe中也需设置textarea,获取iframe中textarea内容,并将其赋给显示代码处的textarea,核心代码如下:

????function go1(){

????var win = document.getElementById(‘demo1‘).contentWindow.document.getElementById(‘code‘).value;

????document.getElementById("mysource").value=win;

}

????文本关键字高亮

????通常用<div>来实现,核心思想为获取div中文本,并用设置了高亮的相同内容替换之

????核心JQ代码:

????$(document).ready(function() {

???? var key = "高亮字";

???? $("#keyword").html(function() {

???? return $(this).text().replace(key,"<font color=\"blue\">"+key+"</font>");

???? });

????多关键字:

????<script language="JavaScript">

txt.innerHTML = txt.innerHTML.replace(/(文章)|(关键字)|(功能)/gi,"<font color=red>$1$2$3</font>");

</script>

txt为div。

????富文本编辑器

????富文本编辑器往往需要对字体大小,颜色,插入图片,表情等做众多改变,目前用得最多、兼容性最好的还是iframe方式。

????先将iframe标签通过:

????var edit=document.getElementById("myedit").contentWindow;

????edit.document.designMode="On";

????edit.document.contentEditable="ture";????

将其设置为可编辑状态。换而言之,HTML在线编辑器就是一个可编辑的iframe

具体功能实现:

浏览器已经提供了实现这些功能的接口execCommand

iframe.contentWindow.document.execCommand(cmd, isDefaultShowUI, value);

????execCommand具体使用参见下篇博文。

????

????以上为在线HTML编译,文本关键字高亮,富文本编辑器实现大致思路,由于他们功能看似类似,实则不然,所以放在一起以便对比讨论。

????新手,欢迎高手批评指正。

在线HTML编译,文本关键字高亮显示,富文本编辑实现大概思路

原文:http://www.cnblogs.com/xiangxs/p/5120574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!