富文本编辑器

<!doctype html>
<html dir="ltr" lang="zh-CN">
  <head>
    <meta charset="gbk"/>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <style type="text/css">
      #editor{
        float:left; width:390px;background:#D5F3F4;padding-left:10px;   
      }
      #editor span.button{
        display:block;float:left;border: 1px solid  #CCC;margin:1px 5px 1px 0px ;color: #000;
        background: #D0E8FC;width:40px;height:20px;text-align:center;
      }
      #editor select{ display:block; float:left;height:20px;width:60px;margin-right:5px;}
      #textarea {width:382px;height:100px;}
    </style>
  <title>富文本编辑器</title>
  </head>
  <body>
<form action="#">
<div id="editor">
  <span class="button" title="bold" unselectable="on">加粗</span>
  <span class="button" title="italic" unselectable="on">斜体</span>
  <span class="button" title="underline" unselectable="on">下划</span>
  <span class="button" title="justifycenter" unselectable="on">居中</span>
  <span class="button" title="justifyleft" unselectable="on">居左</span>
  <span class="button" title="justifyright" unselectable="on">居右</span>
  <span class="button" title="outdent" unselectable="on">悬挂</span>
  <span class="button" title="indent" unselectable="on">缩进</span>
  <span class="button" title="insertunorderedlist" unselectable="on">无序</span>
  <span class="button" title="insertorderedlist" unselectable="on">有序</span>
  <span class="button" title="createlink" unselectable="on">链接</span>
  <span class="button" title="InsertImage" unselectable="on">图片</span>
  <span class="button" title="html" unselectable="on">源码</span>
  <select title="fontname">
    <option value="SimSun">宋体</option>
    <option value="LiSu">隶书</option>
    <option value="KaiTi_GB2312">楷体</option>
    <option value="YouYuan">幼圆</option>
    <option value="SimHei">黑体</option>
    <option value="Microsoft YaHei">雅黑</option>
    <option value="Comic Sans MS">Comic Sans MS</option>
  </select>
  <select title="fontsize">
    <option value="1">特小</option>
    <option value="2">很小</option>
    <option value="3">小</option>
    <option value="4">普通</option>
    <option value="5">大</option>
    <option value="6">很大</option>
    <option value="7">特大</option>
 <option value="8">特别大</option>
 <option value="9">真的很大</option>
 <option value="10">不能再大了</option>
  </select>
  <select title="forecolor">
    <option style="color:#000000" value="#000000">■■</option>
    <option style="color:#FF8080" value="#FF8080">■■</option>
    <option style="color:#FFFF00" value="#FFFF00">■■</option>
    <option style="color:#80FF00" value="#80FF00">■■</option>
    <option style="color:#00FFFF" value="#00FFFF">■■</option>
    <option style="color:#0000FF" value="#0000FF">■■</option>
    <option style="color:#FF00FF" value="#FF00FF">■■</option>
  </select>
  <select title="backcolor">
    <option style="color:#000000" value="#000000">■■</option>
    <option style="color:#FF8080" value="#FF8080">■■</option>
    <option style="color:#FFFF00" value="#FFFF00">■■</option>
    <option style="color:#80FF00" value="#80FF00">■■</option>
    <option style="color:#00FFFF" value="#00FFFF">■■</option>
    <option style="color:#0000FF" value="#0000FF">■■</option>
    <option style="color:#FF00FF" value="#FF00FF">■■</option>
  </select>
</div>
<br style="clear:both"/>
<textarea id="textarea"></textarea>

<input id="imgId" name="img" type="file" onChange="fileChange(this.value)" style="display:none"/>
</form>
  </body>

<script type="text/javascript">
 
 var iframe = document.createElement("iframe");
 //向iframe插入图片
 /*function fileChange(value)
 {
  alert(value);
  iframe.contentWindow.focus();
  //iframe.document.execCommand('InsertImage',true);
  var oImg = document.createElement("img");
  oImg.src = value;
  iframe.body.appendChild(oImg);
 }*/

 var addEvent = (function () {
                if (document.addEventListener) {
                    return function (el, type, fn) {
                        el.addEventListener(type, fn, false);
                    };
                } else {
                    return function (el, type, fn) {
                        el.attachEvent('on' + type, function () {
                            return fn.call(el, window.event);
                        });
                    }
                }
            })();

 var deliver = function(iframe){
    //捆定iframe的失去焦点界面
                addEvent(iframe.contentWindow,'blur',function(){
     //获得iframeDocument
     iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
     //讲iframe的内容转移给textare
     textarea.value = iframeDocument.body.innerHTML;
                })
            }

  window.onload = function(){
 //获得富文本编辑块ID
    var editor = document.getElementById("editor");
 //获得所有按钮
    var buttons = editor.getElementsByTagName("span");
 //获得所有下拉列
    var selects = editor.getElementsByTagName("select");
//***********************************************************
    var textarea = document.getElementById("textarea");
    textarea.style.display = "none";
 iframe.style.width = "600px";
    iframe.style.height = "400px";
    iframe.frameBorder=1;
    textarea.parentNode.insertBefore(iframe,textarea);
 //获得ifame编辑文档
    var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
 //开启编辑模式
    iframeDocument.designMode = "on";
    iframeDocument.open();
    iframeDocument.write('<html><head></head><body bgcolor="#FFFFFF"></body></html>');
    iframeDocument.close();

//*************************下面为每一个控间赋指定命令**********************************
 var switchEditMode = true;

            for(var i = 0,l= buttons.length;i<l;i++){
                    buttons[i].onclick = new function(){
                        var command=buttons[i].getAttribute("title");
                        return function(){
                            switch(command){
                                case 'createlink':
         var value = prompt('请输入超链接:', 'http://');
         break;
                                case 'InsertImage':
         iframe.contentWindow.focus();
                                    iframeDocument.execCommand(command,true);
         break;
                                case "html"://查看源码
        if(switchEditMode){//切换到textarea
                                        iframe.style.display = "none";
                                        textarea.style.display = "block";
                                        textarea.value = iframeDocument.body.innerHTML;
                                        textarea.focus();
                                        switchEditMode = false;
                                    }else{//切换到iframe
                                        iframe.style.display = "block";
                                        textarea.style.display = "none";
                                        iframeDocument.body.innerHTML = textarea.value;
                                        iframe.contentWindow.focus();
                                        switchEditMode = true;
                                    }
                                    break;
                                default:
                                    iframeDocument.execCommand(command,false,'');
                                    iframe.contentWindow.focus();
                            }
                        };
                    };
                };
 
    for(i=0,l=selects.length;i<l;i++){
      selects[i].onchange = new function(){
        var select = selects[i];
        return function(){
          var command = select.getAttribute("title"),
          value = select.options[select.selectedIndex].value;
              iframeDocument.execCommand(command,false,value);
        };
      };
    };

 //绑定iframe的oblur方法
 deliver(iframe);
  }
  
   /*function getImgeUrl()
   {
  var content = iframeDocument.body.innerHTML;

   }*/
  </script>
</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值