📄 editor.js
字号:
case '24pt': return 6;
case '36pt': return 7;
default: return 3;
}
}
function chooseColor(obj, state)
{
obj.style.cursor = 'pointer';
var mode = state == 'mouseover' ? 'hover' : 'normal';
obj.className = 'color_' + mode;
}
function getSel()
{
if(is_ie) {
var range = editdoc.selection.createRange();
if(range.htmlText && range.text) {
return range.htmlText;
} else {
var htmltext = '';
for(var i = 0; i < range.length; i++) {
htmltext += range.item(i).outerHTML;
}
return htmltext;
}
} else {
selection = editwin.getSelection();
checkFocus();
range = selection ? selection.getRangeAt(0) : editdoc.createRange();
return getNodeHtml(range.cloneContents(), false);
}
}
function insertLink(cmd)
{
var sel, pos;
if(is_ie) {
sel = editdoc.selection.createRange();
pos = getCaret();
}
var selection = sel ? sel.htmlText : getSel();
selection = trim(selection);
var tmpStr = selection.toLowerCase().replace(/ |\s/ig,'');
tmpStr = tmpStr.replace(/<(.+)><\/\1>/ig,'');
tmpStr = tmpStr.replace(/<p[^>]*><\/p>/ig,'');
if (tmpStr == '')
selection = '';
var ctrlid = 'htmleditor_cmd_' + cmd;
var text = msgs['enter_'+cmd+'_link']+'<br/><input type="text" id="'+ctrlid+'_param_1" size=50 maxlength=1000><br/>'
+ msgs['enter_'+cmd+'_title']+'<br/><input type="text" id="'+ctrlid+'_param_2" size=50 maxlength=100>';
var div = createEditMenu(ctrlid, text);
$(ctrlid + '_param_1').focus();
$(ctrlid + '_param_1').onkeydown = editMenu_keydown;
$(ctrlid + '_param_2').onkeydown = editMenu_keydown;
$(ctrlid + '_submit').onclick = function() {
checkFocus();
if(is_ie) {
setCaret(pos);
}
var href = trim($(ctrlid + '_param_1').value);
var title = trim($(ctrlid + '_param_2').value);
if(href != '') {
if (cmd == 'url')
{
title = selection ? selection : title;
if (title == '')
title = href;
}
href = /^(www\.)/.test(href) ? 'http://'+href : href;
var txt = getLinkText(cmd, href, title);
var offset = 0;
if (cmd == 'url')
offset = txt.length - title.length;
insertHTML(txt, offset, 0, (selection ? true : false), sel);
}
hideMenu();
document.body.removeChild(div);
}
}
function getLinkText(cmd, href, title)
{
var result = '';
if (cmd == 'url')
result = '<a href="' + href + '" target="_blank">' + title + '</a>';
else if (cmd == 'img')
result = '[img="' + href + '"]' + title + '[/img]';
else if (cmd == 'media')
result = '[media="' + href + '"]' + title + '[/media]';
return result;
}
function insertHTML(text, offset, end, selected, sel)
{
checkFocus();
if(is_ie) {
if(typeof(editdoc.selection)!='undefined'
&& editdoc.selection.type != 'Text' && editdoc.selection.type != 'None') {
offset = false;
editdoc.selection.clear();
}
if(typeof(sel)=='undefined') {
sel = editdoc.selection.createRange();
}
sel.pasteHTML(text);
if(text.indexOf('\n') == -1) {
if(typeof(offset)!='undefined') {
sel.moveStart('character', offset-strlen(text));
sel.moveEnd('character', -end);
} else if(offset != false) {
sel.moveStart('character', -strlen(text));
}
if(typeof(selected)!='undefined' && selected) {
sel.select();
}
}
} else {
editdoc.execCommand('removeformat', false, true);
var frag = editdoc.createDocumentFragment();
var tmpNode = editdoc.createElement('span');
tmpNode.innerHTML = text;
while (tmpNode.firstChild) {
frag.appendChild(tmpNode.firstChild);
}
insertNodeAtSel(frag);
}
}
function clearContent()
{
if(wysiwyg) {
editdoc.body.innerHTML = is_ie ? '' : '<br/>';
} else {
textobj.value = '';
}
}
function resizeEditor(y)
{
var obj = wysiwyg ? editbox : textobj;
var height_new = parseInt(obj.style.height, 10) + y;
if(height_new >= 100) {
obj.style.height = height_new + 'px';
}
}
function checkFocus()
{
var obj = wysiwyg ? editwin : textobj;
if(!obj.hasfocus) obj.focus();
}
function insertSmile(smileid)
{
checkFocus();
var src = $('smile_' + smileid).src;
var code = $('smile_' + smileid).alt;
var title = $('smile_' + smileid).title;
if(typeof wysiwyg != 'undefined' && wysiwyg) {
if(is_ie) {
insertHTML('<img src="' + src + '" border="0" align="absbottom" smileid="' + smileid + '" alt="' + code + '" title="' + title + '"/>',
false);
} else {
editdoc.execCommand('InsertImage', false, src);
var smileImgs = editdoc.body.getElementsByTagName('img');
for(var i = 0; i < smileImgs.length; i++) {
if(smileImgs[i].src == src && smileImgs[i].getAttribute('smileid') < 1) {
smileImgs[i].setAttribute('smileid', smileid);
smileImgs[i].setAttribute('border', "0");
smileImgs[i].setAttribute('align', "absbottom");
smileImgs[i].setAttribute('alt', code);
smileImgs[i].setAttribute('title', title);
}
}
}
} else {
var txt = '<img src="' + src + '" border="0" align="absbottom" smileid="' + smileid + '" alt="' + code + '" title="' + title + '"/>';
var selection = document.selection;
checkFocus();
if(typeof(textobj.selectionStart)!='undefined') {
textobj.value = textobj.value.substr(0, textobj.selectionStart) + txt + textobj.value.substr(textobj.selectionEnd);
} else if(selection && selection.createRange) {
var sel = selection.createRange();
sel.text = txt;
sel.moveStart('character', -strlen(txt));
} else {
textobj.value += txt;
}
}
}
function setCaretAtEnd() {
var obj = (typeof(wysiwyg) == 'undefined' || !wysiwyg) ? textobj : editwin;
if(typeof(wysiwyg) != 'undefined' && wysiwyg) {
if(is_ie) {
var sel = editdoc.selection.createRange();
sel.moveStart('character', strlen(getContent()));
sel.select();
}
} else {
if(obj.createTextRange) {
var sel = obj.createTextRange();
sel.moveStart('character', strlen(obj.value));
sel.collapse();
sel.select();
}
}
}
function switchEditor(mode)
{
mode = parseInt(mode);
if(mode != wysiwyg)
{
var parsedtext = getContent();
wysiwyg = mode;
createEditor(mode, parsedtext);
editwin.focus();
setCaretAtEnd();
}
}
function RGBToColor(forecolor)
{
if(is_ie) {
return hexRGBToColor((forecolor & 0xFF).toString(16), ((forecolor >> 8) & 0xFF).toString(16),
((forecolor >> 16) & 0xFF).toString(16));
}
if(forecolor == '' || forecolor == null) {
forecolor = window.getComputedStyle(editdoc.body, null).getPropertyValue('color');
}
if(forecolor.toLowerCase().indexOf('rgb') == 0) {
var matches = forecolor.match(/^rgb\s*\(([0-9]+),\s*([0-9]+),\s*([0-9]+)\)$/);
if(matches) {
forecolor = hexRGBToColor((matches[1] & 0xFF).toString(16),
(matches[2] & 0xFF).toString(16),
(matches[3] & 0xFF).toString(16));
} else {
forecolor = RGBToColor(null);
}
}
return forecolor;
}
function hexRGBToColor(r, g, b)
{
var coloroptions = {'#000000' : 'Black', '#a0522d' : 'Sienna', '#556b2f' : 'DarkOliveGreen', '#006400' : 'DarkGreen',
'#483d8b' : 'DarkSlateBlue', '#000080' : 'Navy', '#4b0082' : 'Indigo', '#2f4f4f' : 'DarkSlateGray',
'#8b0000' : 'DarkRed', '#ff8c00' : 'DarkOrange', '#808000' : 'Olive', '#008000' : 'Green',
'#008080' : 'Teal', '#0000ff' : 'Blue', '#708090' : 'SlateGray', '#696969' : 'DimGray',
'#ff0000' : 'Red', '#f4a460' : 'SandyBrown', '#9acd32' : 'YellowGreen', '#2e8b57' : 'SeaGreen',
'#48d1cc' : 'MediumTurquoise', '#4169e1' : 'RoyalBlue', '#800080' : 'Purple', '#808080' : 'Gray',
'#ff00ff' : 'Magenta', '#ffa500' : 'Orange', '#ffff00' : 'Yellow', '#00ff00' : 'Lime',
'#00ffff' : 'Cyan', '#00bfff' : 'DeepSkyBlue', '#9932cc' : 'DarkOrchid', '#c0c0c0' : 'Silver',
'#ffc0cb' : 'Pink', '#f5deb3' : 'Wheat', '#fffacd' : 'LemonChiffon', '#98fb98' : 'PaleGreen',
'#afeeee' : 'PaleTurquoise', '#add8e6' : 'LightBlue', '#dda0dd' : 'Plum', '#ffffff' : 'White'};
return coloroptions['#' + (getHexStr(r) + getHexStr(g) + getHexStr(b))];
}
function getHexStr(str)
{
str = str + '';
while(str.length < 2) { str = '0' + str; }
return str;
}
function addSelRange(node)
{
checkFocus();
var sel = editwin.getSelection();
var range = editdoc.createRange();
range.selectNodeContents(node);
sel.removeAllRanges();
sel.addRange(range);
}
function insertNodeAtSel(text)
{
var sel = editwin.getSelection();
var range = sel ? sel.getRangeAt(0) : editdoc.createRange();
sel.removeAllRanges();
range.deleteContents();
var node = range.startContainer;
var pos = range.startOffset;
switch(node.nodeType) {
case Node.ELEMENT_NODE:
var selNode = text.firstChild;
node.insertBefore(text, node.childNodes[pos]);
addSelRange(selNode);
break;
case Node.TEXT_NODE:
node = node.splitText(pos);
var selNode = text.firstChild;
node.parentNode.insertBefore(text, node);
addSelRange(selNode);
break;
}
}
function getNodeHtml(root, isTopNode)
{
var result = "";
switch(root.nodeType) {
case Node.TEXT_NODE:
result = root.data;
break;
case Node.ELEMENT_NODE:
case Node.DOCUMENT_FRAGMENT_NODE:
var isOver;
if(isTopNode) {
isOver = !root.hasChildNodes();
result = '<' + root.tagName.toLowerCase();
var attrs = root.attributes;
var moz = /_moz/i;
for(var i = 0; i < attrs.length; ++i) {
var attr = attrs.item(i);
if(!attr.specified || attr.name.match(moz) || attr.value.match(moz)) {
continue;
}
result += " " + attr.name.toLowerCase() + '="' + attr.value + '"';
}
result += isOver ? "/>" : ">";
}
for(var child = root.firstChild; child; child = child.nextSibling) {
result += getNodeHtml(child, true);
}
if(isTopNode && !isOver) {
result += "</" + root.tagName.toLowerCase() + ">";
}
break;
}
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -