zoukankan      html  css  js  c++  java
  • 富文本编辑器笑脸表情(一)

    这部分是利用iframe实现我们的富文本编辑器。上面提到激活编辑模式有两个方法,contentEditable="true"与designMode="On"。contentEditable 是针对单个元素,而designMode是面向整个文档的。因此,当我们使用iframe时,我们得先取到iframe的document。

    var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

    不过,在这之前,我们首先动态生成iframe,然后再对iframe进行一些样式设置,插入到原textarea之前,既然有了iframe作为我们输入的场所,那么我们就没有必要留着textarea占着空间,我们把它隐藏便是。最后,我们用iframeDocument执行execCommand()就圆满了……下面是以上过程的代码

       //***********************************************************   
        var textarea = document.getElementById("textarea");
        textarea.style.display = "none";
        var iframe = document.createElement("iframe");
        iframe.style.width = "390px";
        iframe.style.height = "100px";
        iframe.frameBorder=0;
        textarea.parentNode.insertBefore(iframe,textarea);
        var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
        iframeDocument.designMode = "on";
        iframeDocument.open();
        iframeDocument.write('');
        iframeDocument.close();
    //***********************************************************


    参考:司徒正美的博客

    实例:

    <!DOCTYPE html>
    <html>
        <head>
            <title>笑脸表情</title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <style>
                *{margin:0px;padding: 0px;}
                ul{list-style: none;}
                .cfl{*zoom: 1;}
                .cfl:after{content: "\0020";display: block;height: 0;clear: both;overflow: hidden;visibility: hidden;}
                .mcont{margin:100px 20px; height: 330px; 450px; position: relative;}
                .mcont ul{ overflow: hidden;  360px; position: absolute; left:0px; top:-70px; display:none;}
                .mcont li{float:left;_display:inline;  32px; height: 32px; margin: 0px 4px 4px 0px; cursor: pointer;}
                .mbar{height: 30px;line-height: 30px; vertical-align: middle; background: #F1F1F1; border:1px solid #666666;}
                .mbar input{display:inline-block;  60px; height: 20px; cursor: pointer;}
                .mcont textarea{height:150px;450px;}
            </style>
        </head>
        <body>
            <script type="text/javascript">
                var dataFace = [
                    {name:"微笑",msrc:"./images/face/f01.png"},
                    {name:"大笑",msrc:"./images/face/f02.png"},
                    {name:"偷笑",msrc:"./images/face/f03.png"},
                    {name:"酷",msrc:"./images/face/f04.png"},
                    {name:"鬼脸",msrc:"./images/face/f05.png"},
                    {name:"流鼻血",msrc:"./images/face/f06.png"},
                    {name:"色",msrc:"./images/face/f07.png"},
                    {name:"疑问",msrc:"./images/face/f08.png"},
                    {name:"羞",msrc:"./images/face/f09.png"},
                    {name:"囧",msrc:"./images/face/f10.png"},
                    {name:"萌",msrc:"./images/face/f11.png"},
                    {name:"鄙视",msrc:"./images/face/f12.png"},
                    {name:"晕",msrc:"./images/face/f13.png"},
                    {name:"汗",msrc:"./images/face/f14.png"},
                    {name:"可怜",msrc:"./images/face/f15.png"},
                    {name:"靠",msrc:"./images/face/f16.png"},
                    {name:"委屈",msrc:"./images/face/f17.png"},
                    {name:"大哭",msrc:"./images/face/f18.png"},
                    {name:"生气",msrc:"./images/face/f19.png"},
                    {name:"拜拜",msrc:"./images/face/f20.png"},
                ];
                
                window.onload = function(){
                    var editor = document.getElementById("meditor");
                    
                    var ul = document.createElement("ul");
                    var ulHtml = "";
                    for(var i = 0,l= dataFace.length;i<l;i++){
                        ulHtml +="<li><img alt='"+dataFace[i].name+"' src='"+dataFace[i].msrc+"' /></li>";
                    };
                    ul.innerHTML=ulHtml;
                    editor.insertBefore(ul, editor.getElementsByTagName("div")[0]);
                   
                    var textarea = document.getElementById("txt");
                    textarea.style.display = "none";
                    var iframe = document.createElement("iframe");
                    iframe.style.width = "448px";
                    iframe.style.height = "150px";
                    iframe.style.border = "1px solid #666666";
                    iframe.frameBorder=0;
                    textarea.parentNode.insertBefore(iframe,textarea);
                    var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
                    iframeDocument.designMode = "on";
                    iframeDocument.open();
                    iframeDocument.write('<html><head></head><body style="min-height:100px;" bgcolor="#FFFFFF"></body></html>');
                    iframeDocument.close();
    
                    editor.getElementsByTagName("input")[0].onclick=function(){
                        editor.getElementsByTagName("ul")[0].style.display = "block";
                    }
                    
                    var lis = editor.getElementsByTagName("li");
                    for(var i = 0, l = lis.length; i<l;i++){
                        lis[i].onclick = new function(){
                            var choose = lis[i];
                            return function(){
                                editor.getElementsByTagName("ul")[0].style.display = "none";
                                var value = choose.getElementsByTagName("img")[0].src;
                                iframeDocument.execCommand("insertimage",false,value);
                            }
                        }
                    };
                }
            </script>
            <div id="meditor" class="mcont">
                <div class="mbar"><input type="button" value="图片" /></div>
                <textarea id="txt"></textarea>
            </div>
        </body>
    </html>
  • 相关阅读:
    spring整合mybatis的事物管理配置
    平庸久了,是会上瘾的
    kafka基本概念
    JMS编程模型
    aop的基本概念
    事务的隔离级别和传播行为
    IntelliJ IDEA 导入Project
    [PowerShell]列出檔案與資料夾的資訊
    [powershell]统计目录大小
    [powershell]有关IP的设置
  • 原文地址:https://www.cnblogs.com/kuikui/p/2713475.html
Copyright © 2011-2022 走看看