一个简单的富文本编辑器

<ul class="func">
    <li class="bgcolor">
        <p>背景色</p>
        <input class="color" id="color">
    </li>
    <li class="lh40">
        <p id="bold">加粗</p>
    </li>
    <li class="lh40">
        <p id="copy">复制</p>
    </li>
    <li>
        <p id="createlink" class="lh40">超链接</p>
        <div class="layer dn" id="layer" >
            <input type="text" id="url"/>
            <p id="close">close</p>
        </div>
    </li>
    <li class="lh40">
        <p id="delete">删除</p>
    </li>
    <li>
        <p>字体样式</p>
        <select name="" id="fontname">
            <option value="宋体" selected>宋体</option>
            <option value="微软雅黑">微软雅黑</option>
        </select>
    </li>
    <li class="fzcolor">
        <p>字体色</p>
        <input class="color" id="fontcolor">
    </li>
    <li>
        <p>字体大小</p>
        <select name="" id="fontsize">
            <option value="1" selected>1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
        </select>
    </li>
    <li>
        <p>标签</p>
        <select name="" id="tag">
            <option value="<h1>">h1</option>
            <option value="<h2>">h2</option>
            <option value="<h3>">h3</option>
            <option value="<h4>">h4</option>
            <option value="<h5>">h5</option>
            <option value="<h6>">h6</option>
        </select>
    </li>
    <li>
        <p id="indent">缩进</p>
    </li>
    <li>
        <p id="insertimg" class="lh40">插入图片</p>
        <div id="imglayer" class="dn">
            <input type="text" id="imgtxt"/>
            <p id="imgclose">close</p>
        </div>
    </li>
    <li>
        <p id="insertorderedlist" class="lh40">插入ol列表</p>
    </li>
    <li>
        <p id="insertunorderedlist" class="lh40">插入ul列表</p>
    </li>
    <li>
        <p id="insertparagraph" class="lh40">插入段落</p>
    </li>
    <li>
        <p id="italic" class="lh40">斜体</p>
    </li>
    <li>
        <p id="justifycenter" class="lh40">居中</p>
    </li>
    <li>
        <p id="justifyleft" class="lh40">左对齐</p>
    </li>
    <li>
        <p id="selectall" class="lh40 fz12">选择所有文本</p>
    </li>
    <li>
        <p id="underline" class="lh40">下划线</p>
    </li>
    <li>
        <p id="unlink" class="lh40">移除超链接</p>
    </li>
</ul>
<iframe src="" frameborder="0" id="frame"></iframe>

css====================

iframe {
    width: 600px;
    height: 200px;
    border: 1px solid red;
}

ul {
    width: 600px;
    height: 220px;
    list-style: none;
}

li {
    float: left;
    margin-left: 10px;
    width: 80px;
    height: 40px;
    text-align: center;
    line-height: 20px;
    border: 1px solid red;
    position: relative;
    cursor: pointer;
}

input {
    width: 80px;
    height: 20px;
}

p {
    width: 100%;
    height: 20px;
}

.fz12 {
    font-size: 12px;
}

* {
    margin: 0;
    padding: 0;
}

.dn {
    display: none;
}

.bgcolor {
    overflow: hidden;
}

.layer {
    position: absolute;
    z-index: 3;
    left: 0;
    top: 50px;
}

#indent {
    line-height: 40px;
}

.lh40 {
    line-height: 40px;
}

select {
    width: 100%;
}

#imglayer {
    position: absolute;
    z-index: 3;
}

js=============================

var frame=document.getElementById(‘frame‘);
var doc=frame.contentWindow.document;
frame.contentWindow.document.designMode=‘on‘;
/*function part*/
function click(id,json){
    var obj=document.getElementById(id);
    obj.addEventListener(‘click‘, function () {
        doc.execCommand(json.name,false,null);
    },false);
}
function clickurl(id,fn){
    var obj=document.getElementById(id);
    obj.addEventListener(‘click‘,fn,false)
}
function id(obj){
    return document.getElementById(obj);
}

/*insert img*/
clickurl(‘insertimg‘, function () {
    id(‘imglayer‘).classList.remove(‘dn‘);
});
clickurl(‘imgclose‘, function () {
    var url=id(‘imgtxt‘).value;
    doc.execCommand(‘insertimage‘,false,url);
    id(‘imgtxt‘).value=‘‘;
    id(‘imglayer‘).classList.add(‘dn‘);
});
/*wrap texts*/
id(‘tag‘).onchange = function () {
    var index = this.selectedIndex;
    var str = this.options[index].value;
    doc.execCommand(‘formatblock‘, null, str);
};
/*fontsize*/
id(‘fontsize‘).onchange = function () {
    var index=this.selectedIndex;
    var str=this.options[index].value;
    doc.execCommand(‘FontSize‘,null,parseInt(str));
};
/*fontcolor*/
id(‘fontcolor‘).addEventListener(‘change‘, function () {
    var colorsel=fontcolor.style.backgroundColor;
    doc.execCommand(‘forecolor‘, false,colorsel);
},false)
/*bgcolor*/
id(‘color‘).addEventListener(‘change‘, function () {
    var colorsel=color.style.backgroundColor;
    doc.execCommand(‘backcolor‘, false,colorsel);
}, false);
/*select fontname*/
id(‘fontname‘).onchange = function () {
    var index=this.selectedIndex;
    var str=this.options[index].value;
    doc.execCommand(‘FontName‘,null,str);
};

/*create link*/
clickurl(‘createlink‘, function () {
    id(‘layer‘).classList.remove(‘dn‘);
});
clickurl(‘close‘, function () {
    var url=id(‘url‘).value;
    doc.execCommand(‘createlink‘,false,url);
    id(‘url‘).value=‘‘;
    id(‘layer‘).classList.add(‘dn‘);
});
/*other easy function*/
click(‘underline‘,{‘name‘:‘underline‘});
click(‘unlink‘,{‘name‘:‘unlink‘});
click(‘selectall‘,{‘name‘:‘selectall‘});
click(‘justifyleft‘,{‘name‘:‘justifyleft‘});
click(‘justifycenter‘,{‘name‘:‘justifycenter‘});
click(‘italic‘,{‘name‘:‘italic‘});
click(‘insertparagraph‘,{‘name‘:‘insertparagraph‘});
click(‘insertunorderedlist‘,{‘name‘:‘insertunorderedlist‘});
click(‘insertorderedlist‘,{‘name‘:‘insertorderedlist‘});
click(‘italic‘,{‘name‘:‘italic‘});
click(‘indent‘,{‘name‘:‘indent‘});
click(‘delete‘,{‘name‘:‘delete‘});
click(‘bold‘,{‘name‘:‘bold‘});
click(‘copy‘,{‘name‘:‘copy‘});

  

时间: 2024-08-28 13:31:42

一个简单的富文本编辑器的相关文章

Javascript实现简单的富文本编辑器

<span style="font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &

实现一个简易的富文本编辑器(二):给富文本添加自定义事件

为富文本添加一个提交按钮,点击按钮可以获取富文本内容.但是在提交前或者提交后我想做一些操作,比如内容校验内容清空等等. 我们直接在该按钮上绑定点击事件同样可以达到目的,但是为了组件化,所以本例打算为提交按钮自定义beforeSubmit.afterSubmit两个事件. 1.创建发布订阅者对象 前文说到,事件系统是发布-订阅模式的一个实现,模式给事件发布函数与事件处理函数进行解耦,使得两者无直接调用关系. 简易发布订阅者对象实现如下: var Event = { // _cachePool :

最简单的富文本编辑器

html: <div class="editor" contenteditable="true"></div> css: .editor{    width: 580px;     height: 65px;    border: 0px;    outline: 0; //设置边框为0:    margin-bottom: 5px; }

textEditorDemo:基于swift的一个富文本编辑器

TextEditorDemo swift:textEditorDemo一个简单的富文本编辑器 一个简单的富文本编辑器 (IPhone 5s Xcode 6.3 swift 1.2) 实现并解决了一些基本功能: 更改字体大小,粗体,下划线,斜体字.并进行了数据的存储 更多请查看网友StringX的文章:http://www.jianshu.com/p/ab5326850e74/comments/327660#comment-327660 在TextView中添加照片,以及照片存储 实现键盘隐藏和弹

由编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入)实现的富文本编辑器

转载请注明: TheViper http://www.cnblogs.com/TheViper  大家都知道,如果只是大概的实现一个简单的富文本编辑器,直接用execCommand就可以了,虽然不同浏览器对execCommand命令的反应不一样,最后效果是差不多的.当然,如果要严谨的,用像ueditor那种只有很少部分实现是用execCommand的富文本编辑器. 昨天,本屌就试着用execCommand搞一个简单的编辑器.在本屌看来,什么字体加粗,斜体,下划线,对齐,列表..直接用execCo

重构wangEditor(web富文本编辑器),欢迎指正!

1. 前言 (下载源码.使用说明.demo,请参见:https://github.com/wangfupeng1988/wangEditor) 前段时间做过一个基于bootstrap的富文本编辑器--wangEditor,并发布到github上(https://github.com/wangfupeng1988/wangEditor),在博客园写了篇文章(http://www.cnblogs.com/wangfupeng1988/p/4088229.html)也受到了不少关注. 之所以有这次重构

UMeditor百度富文本编辑器的使用

批量上传的图片在线管理没法查看图片 是因为jar包本身的Bug,这里暂时做了个替换展示.就是找到Img.js  然后搜索 img.set 替换下就好了 var url=list[i].url ; url=url.replace("D:/JavaWorkSpace/.metadata/.me_tcat7/webapps/WebEUEdit",""); //img.setAttribute('src', urlPrefix + list[i].url + (list[i

【实践】简洁大方的summernote 富文本编辑器插件的用发——实例篇

实例化后的summernote 是这样子的 很漂亮对吧,而我做成页面效果是这样的: 先说说实例化一个summernote 的方法把,其实也不难,jq 选择器选择一个要变成富文本编辑器的元素然后调用 summernote 方法传入一个对象作为参数便可,参数是一个对象,属性就是这个富文本的一些样式属性,如下: 上面的属性是一些比较常用的属性,更多属性可以查看官方文档.特别注意一点的是callbacks 属性,它的作用是summernote 编辑器里面的一些功能要实现的回调方法,这里我的需求只是上传图

vue集成百度UEditor富文本编辑器

在前端开发的项目中.难免会遇到需要在页面上集成一个富文本编辑器.那么.如果你有这个需求.希望可以帮助到你 vue是前端开发者所追捧的框架,简单易上手,但是基于vue的富文本编辑器大多数太过于精简.于是我将百度富文本编辑器放到vue项目中使用.效果图如下 废话不多说. 1.使用vue-cli构建一个vue项目.然后下载UEditor源码.地址:http://ueditor.baidu.com/website/ 把项目复制到vue项目的static文件下.目的是让服务可以访问到里面的文件,打开UEd