在線HTML編譯,文本關鍵字高亮顯示,富文本編輯實現大概思路


    最近被安排做了一個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編譯,文本關鍵字高亮,富文本編輯器實現大致思路,由於他們功能看似類似,實則不然,所以放在一起以便對比討論。

    新手,歡迎高手批評指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM