Basic WYSIWYG HTML Editor With jQuery
| File Size: | 3.62 KB |
|---|---|
| Views Total: | 5280 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
This is a small jQuery script that makes use of contentEditable and document.execCommand API to create a responsive, TinyMCE style WYSIWYG HTML Editor for editable web content.
How to use it:
1. Include Font Awesome Iconic Font for the editor icons.
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
2. Create the editor for the editable web content.
<div class="editor">
<button data-action="bold" title="Bold"><i class="fa fa-bold"></i></button>
<button data-action="italic" title="Italic"><i class="fa fa-italic"></i></button>
<button data-action="underline" title="Underline"><i class="fa fa-underline"></i></button>
<div class="divider"></div>
<button data-action="justifyLeft" title="Align Left"><i class="fa fa-align-left"></i></button>
<button data-action="justifyCenter" title="Align Center"><i class="fa fa-align-center"></i></button>
<button data-action="justifyRight" title="Align Right"><i class="fa fa-align-right"></i></button>
<button data-action="justifyFull" title="Justify"><i class="fa fa-align-justify"></i></button>
<div class="divider"></div>
<button data-action="insertUnorderedList" title="Bullet List"><i class="fa fa-list-ul"></i></button>
<button data-action="insertOrderedList" title="Numbered List"><i class="fa fa-list-ol"></i></button>
<div class="divider"></div>
<select title="Font Family" data-action="fontName">
<option selected="selected" disabled="disabled">Font Family</option>
<option value="arial">Arial</option>
<option value="sans-serif">Sans Serif</option>
<option value="georgia">Georgia </option>
<option value="impact">Impact</option>
<option value="roboto">Roboto</option>
<option value="verdana">Verdana</option>
</select>
<select title="Font Size" data-action="fontSize">
<option value="1">10px</option>
<option value="2">12px</option>
<option value="3">14px</option>
<option value="4">16px</option>
<option value="5">18px</option>
<option value="6">21px</option>
<option value="7">26px</option>
</select>
<select title="Format" data-action="formatBlock">
<option selected="selected" disabled="disabled">Formatting</option>
<option value="h1">Heading 1</option>
<option value="h2">Heading 2</option>
<option value="h3">Heading 3</option>
<option value="p">Paragraph</option>
</select>
<div class="divider"></div>
<button data-action="createLink" title="Insert Link"><i class="fa fa-link"></i></button>
<button data-action="insertImage" title="Insert Image"><i class="fa fa-image"></i></button>
<button data-action="insertHorizontalRule" title="Insert Horizontal Rule">-</button>
<div class="divider"></div>
<button data-action="undo" title="Undo"><i class="fa fa-undo"></i></button>
<button data-action="redo" title="Redo"><i class="fa fa-repeat"></i></button>
<button data-action="removeFormat" title="Remove Formatting"><i class="fa fa-eraser"></i></button>
<button data-action="delete" title="Delete"><i class="fa fa-trash"></i></button>
</div>
<div id="document" contenteditable="true"> ... </div>
3. The required CSS for the editor.
#document {
margin: 25px 0;
padding: 10px;
font-size: 15px;
line-height: 1.4;
border-radius: 5px;
border: 2px solid transparent;
outline: none;
}
#document:hover, #document:focus { border-color: rgba(0, 0, 255, 0.4); }
#document li { margin-bottom: 10px; }
#document p img {
float: left;
max-width: 250px;
width: 100%;
height: auto;
margin: 5px 5px 5px 0;
}
#document p img.right {
float: right;
margin: 5px 0 5px 5px;
}
font[size='1'] { font-size: 10px; }
font[size='2'] { font-size: 12px; }
font[size='3'] { font-size: 14px; }
font[size='4'] { font-size: 16px; }
font[size='5'] { font-size: 18px; }
font[size='6'] { font-size: 21px; }
font[size='7'] { font-size: 26px; }
.editor {
border: 1px solid #999;
border-radius: 5px;
padding: 10px;
background: #eee;
}
.editor .hide { display: none; }
.editor .divider {
margin: 0 4px;
display: inline-block;
}
.editor .divider:after {
content: "|";
color: #666;
}
.editor button {
width: 25px;
text-transform: uppercase;
font-weight: 700;
}
.editor button[data-action='italic'] { font-style: italic; }
.editor button[data-action='underline'] { text-decoration: underline; }
.editor button:hover {
background: #ccc;
color: #fff;
}
.editor button, .editor select {
background: #fff;
border: 1px solid #666;
border-radius: 5px;
height: 25px;
margin: 5px 2px;
}
.editor button:hover, .editor select:hover { cursor: pointer; }
.context-menu {
background: #fff;
position: absolute;
top: 0;
left: 50%;
padding: 15px;
border: 1px solid #333;
}
4. The main JavaScript (jQuery script) for the editor. Copy the JavaScript snippets as shown below and insert them after jQuery JavaScript library and done.
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous">
</script>
// Font Style
$('button').on('click', function(e) {
var $this = $(this),
action = $this.data("action");
var aShowDefaultUI = false, aValueArgument = null;
if($this.data('show-default-ui'))
aShowDefaultUI = $this.data('show-default-ui');
if($this.data('value-args'))
aValueArgument = $this.data('value-args');
if($this.data('action') == 'createLink')
aValueArgument = prompt("Please specify URL (including http protocol)", 'http://www.');
if($this.data('action') == 'insertImage')
aValueArgument = prompt("Please specify Image URL (including http protocol)", 'http://www.');
document.execCommand(action, aShowDefaultUI, aValueArgument);
});
// Font Formatting Selects
$('select').on('change', function() {
var $this = $(this),
action = $this.data("action"),
aValueArgument = $this.val(),
aShowDefaultUI = false;
if($this.data('show-default-ui'))
aShowDefaultUI = $this.data('show-default-ui');
document.execCommand(action, aShowDefaultUI, aValueArgument);
});
// Image handling
$('img').on('click', function() {
var $this = $(this);
$this.toggleClass('right');
});
This awesome jQuery plugin is developed by Amanda Ashley. For more Advanced Usages, please check the demo page or visit the official website.











