📄 kindeditor.js
字号:
/**
* WYSIWYG HTML Editor for Internet
*
* @author Roddy <luolonghao@gmail.com>
* @version 2.5.3
*/
var KE_VERSION = "2.5.4";
var KE_EDITOR_TYPE = "simple"; //full or simple
var KE_SAFE_MODE = false; // true or false
var KE_UPLOAD_MODE = true; // true or false
var KE_FONT_FAMILY = "Courier New";
var KE_WIDTH = "700px";
var KE_HEIGHT = "400px";
var KE_SITE_DOMAIN = "";
var KE_SKIN_PATH = "KindEditor/skins/default/";
var KE_ICON_PATH = "KindEditor/icons/";
var KE_IMAGE_ATTACH_PATH = "upload/image/";
var KE_IMAGE_UPLOAD_CGI = "servlet/uploadImage";
var KE_CSS_PATH = "/editor/common.css";
var KE_MENU_BORDER_COLOR = '#AAAAAA';
var KE_MENU_BG_COLOR = '#EFEFEF';
var KE_MENU_TEXT_COLOR = '#222222';
var KE_MENU_SELECTED_COLOR = '#CCCCCC';
var KE_TOOLBAR_BORDER_COLOR = '#DDDDDD';
var KE_TOOLBAR_BG_COLOR = '#EFEFEF';
var KE_FORM_BORDER_COLOR = '#DDDDDD';
var KE_FORM_BG_COLOR = '#FFFFFF';
var KE_BUTTON_COLOR = '#AAAAAA';
var KE_LANG = {
INPUT_URL : "请输入正确的URL地址。",
SELECT_IMAGE : "请选择图片。",
INVALID_IMAGE : "只能选择GIF,JPG,PNG,BMP格式的图片,请重新选择。",
INVALID_FLASH : "只能选择SWF格式的文件,请重新选择。",
INVALID_MEDIA : "只能选择MP3,WAV,WMA,WMV,MID,AVI,MPG,ASF格式的文件,请重新选择。",
INVALID_REAL : "只能选择RM,RMVB格式的文件,请重新选择。",
INVALID_WIDTH : "宽度不是数字,请重新输入。",
INVALID_HEIGHT : "高度不是数字,请重新输入。",
INVALID_BORDER : "边框不是数字,请重新输入。",
INVALID_HSPACE : "横隔不是数字,请重新输入。",
INVALID_VSPACE : "竖隔不是数字,请重新输入。",
INPUT_CONTENT : "请输入内容",
TITLE : "描述",
WIDTH : "宽",
HEIGHT : "高",
BORDER : "边",
ALIGN : "对齐方式",
HSPACE : "横隔",
VSPACE : "竖隔",
CONFIRM : "确定",
CANCEL : "取消",
PREVIEW : "预览",
LISTENING : "试听",
LOCAL : "本地",
REMOTE : "远程",
NEW_WINDOW : "新窗口",
CURRENT_WINDOW : "当前窗口",
TARGET : "目标",
ABOUT : "访问技术支持网站",
SUBJECT : "标题"
}
var KE_FONT_NAME = Array(
Array('SimSun', '宋体'),
Array('SimHei', '黑体'),
Array('FangSong_GB2312', '仿宋体'),
Array('KaiTi_GB2312', '楷体'),
Array('NSimSun', '新宋体'),
Array('Arial', 'Arial'),
Array('Arial Black', 'Arial Black'),
Array('Times New Roman', 'Times New Roman'),
Array('Courier New', 'Courier New'),
Array('Tahoma', 'Tahoma'),
Array('Verdana', 'Verdana'),
Array('GulimChe', 'GulimChe'),
Array('MS Gothic', 'MS Gothic')
);
var KE_SPECIAL_CHARACTER = Array(
'§','№','☆','★','○','●','◎','◇','◆','□','℃','‰','■','△','▲','※',
'→','←','↑','↓','〓','¤','°','#','&','@','\','︿','_',' ̄','―','α',
'β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ',
'σ','τ','υ','φ','χ','ψ','ω','≈','≡','≠','=','≤','≥','<','>','≮',
'≯','∷','±','+','-','×','÷','/','∫','∮','∝','∞','∧','∨','∑','∏',
'∪','∩','∈','∵','∴','⊥','∥','∠','⌒','⊙','≌','∽','〖','〗',
'【','】','(',')','[',']'
);
var KE_TOP_TOOLBAR_ICON = Array(
Array('KE_SOURCE', 'source.gif', '视图转换'),
Array('KE_PREVIEW', 'preview.gif', '预览'),
Array('KE_ZOOM', 'zoom.gif', '显示比例'),
Array('KE_PRINT', 'print.gif', '打印'),
Array('KE_UNDO', 'undo.gif', '回退'),
Array('KE_REDO', 'redo.gif', '前进'),
Array('KE_CUT', 'cut.gif', '剪切'),
Array('KE_COPY', 'copy.gif', '复制'),
Array('KE_PASTE', 'paste.gif', '粘贴'),
Array('KE_SELECTALL', 'selectall.gif', '全选'),
Array('KE_JUSTIFYLEFT', 'justifyleft.gif', '左对齐'),
Array('KE_JUSTIFYCENTER', 'justifycenter.gif', '居中'),
Array('KE_JUSTIFYRIGHT', 'justifyright.gif', '右对齐'),
Array('KE_JUSTIFYFULL', 'justifyfull.gif', '两端对齐'),
Array('KE_NUMBEREDLIST', 'numberedlist.gif', '编号'),
Array('KE_UNORDERLIST', 'unorderedlist.gif', '项目符号'),
Array('KE_INDENT', 'indent.gif', '减少缩进'),
Array('KE_OUTDENT', 'outdent.gif', '增加缩进'),
Array('KE_SUBSCRIPT', 'subscript.gif', '下标'),
Array('KE_SUPERSCRIPT', 'superscript.gif', '上标'),
Array('KE_DATE', 'date.gif', '日期'),
Array('KE_TIME', 'time.gif', '时间')
);
var KE_BOTTOM_TOOLBAR_ICON = Array(
Array('KE_TITLE', 'title.gif', '标题'),
Array('KE_FONTNAME', 'font.gif', '字体'),
Array('KE_FONTSIZE', 'fontsize.gif', '文字大小'),
Array('KE_TEXTCOLOR', 'textcolor.gif', '文字颜色'),
Array('KE_BGCOLOR', 'bgcolor.gif', '文字背景'),
Array('KE_BOLD', 'bold.gif', '粗体'),
Array('KE_ITALIC', 'italic.gif', '斜体'),
Array('KE_UNDERLINE', 'underline.gif', '下划线'),
Array('KE_STRIKE', 'strikethrough.gif', '删除线'),
Array('KE_REMOVE', 'removeformat.gif', '删除格式'),
Array('KE_IMAGE', 'image.gif', '图片'),
Array('KE_FLASH', 'flash.gif', 'Flash'),
Array('KE_MEDIA', 'media.gif', 'Windows Media Player'),
Array('KE_REAL', 'real.gif', 'Real Player'),
Array('KE_LAYER', 'layer.gif', '层'),
Array('KE_TABLE', 'table.gif', '表格'),
Array('KE_SPECIALCHAR', 'specialchar.gif', '特殊字符'),
Array('KE_HR', 'hr.gif', '水平线'),
Array('KE_ICON', 'emoticons.gif', '表情'),
Array('KE_LINK', 'link.gif', '创建超级连接'),
Array('KE_UNLINK', 'unlink.gif', '删除超级连接')
);
var KE_SIMPLE_TOOLBAR_ICON = Array(
Array('KE_FONTNAME', 'font.gif', '字体'),
Array('KE_FONTSIZE', 'fontsize.gif', '文字大小'),
Array('KE_TEXTCOLOR', 'textcolor.gif', '文字颜色'),
Array('KE_BGCOLOR', 'bgcolor.gif', '文字背景'),
Array('KE_BOLD', 'bold.gif', '粗体'),
Array('KE_ITALIC', 'italic.gif', '斜体'),
Array('KE_UNDERLINE', 'underline.gif', '下划线'),
Array('KE_JUSTIFYLEFT', 'justifyleft.gif', '左对齐'),
Array('KE_JUSTIFYCENTER', 'justifycenter.gif', '居中'),
Array('KE_JUSTIFYRIGHT', 'justifyright.gif', '右对齐'),
Array('KE_IMAGE', 'image.gif', '图片'),
Array('KE_LAYER', 'layer.gif', '层'),
Array('KE_HR', 'hr.gif', '水平线'),
Array('KE_ICON', 'emoticons.gif', '表情'),
Array('KE_LINK', 'link.gif', '创建超级连接')
);
var KE_TITLE_TABLE = Array(
Array('H1', KE_LANG['SUBJECT'] + ' 1'),
Array('H2', KE_LANG['SUBJECT'] + ' 2'),
Array('H3', KE_LANG['SUBJECT'] + ' 3'),
Array('H4', KE_LANG['SUBJECT'] + ' 4'),
Array('H5', KE_LANG['SUBJECT'] + ' 5'),
Array('H6', KE_LANG['SUBJECT'] + ' 6')
);
var KE_ZOOM_TABLE = Array('250%', '200%', '150%', '120%', '100%', '80%', '50%');
var KE_FONT_SIZE = Array(
Array(1,'8pt'),
Array(2,'10pt'),
Array(3,'12pt'),
Array(4,'14pt'),
Array(5,'18pt'),
Array(6,'24pt'),
Array(7,'36pt')
);
var KE_POPUP_MENU_TABLE = Array(
"KE_ZOOM", "KE_TITLE", "KE_FONTNAME", "KE_FONTSIZE", "KE_TEXTCOLOR", "KE_BGCOLOR",
"KE_LAYER", "KE_TABLE", "KE_HR", "KE_ICON", "KE_SPECIALCHAR",
"KE_IMAGE", "KE_FLASH", "KE_MEDIA", "KE_REAL", "KE_LINK"
);
var KE_COLOR_TABLE = Array(
"#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF", "#FF00FF", "#FFFFFF", "#F5F5F5", "#DCDCDC", "#FFFAFA",
"#D3D3D3", "#C0C0C0", "#A9A9A9", "#808080", "#696969", "#000000", "#2F4F4F", "#708090", "#778899", "#4682B4",
"#4169E1", "#6495ED", "#B0C4DE", "#7B68EE", "#6A5ACD", "#483D8B", "#191970", "#000080", "#00008B", "#0000CD",
"#1E90FF", "#00BFFF", "#87CEFA", "#87CEEB", "#ADD8E6", "#B0E0E6", "#F0FFFF", "#E0FFFF", "#AFEEEE", "#00CED1",
"#5F9EA0", "#48D1CC", "#00FFFF", "#40E0D0", "#20B2AA", "#008B8B", "#008080", "#7FFFD4", "#66CDAA", "#8FBC8F",
"#3CB371", "#2E8B57", "#006400", "#008000", "#228B22", "#32CD32", "#00FF00", "#7FFF00", "#7CFC00", "#ADFF2F",
"#98FB98", "#90EE90", "#00FF7F", "#00FA9A", "#556B2F", "#6B8E23", "#808000", "#BDB76B", "#B8860B", "#DAA520",
"#FFD700", "#F0E68C", "#EEE8AA", "#FFEBCD", "#FFE4B5", "#F5DEB3", "#FFDEAD", "#DEB887", "#D2B48C", "#BC8F8F",
"#A0522D", "#8B4513", "#D2691E", "#CD853F", "#F4A460", "#8B0000", "#800000", "#A52A2A", "#B22222", "#CD5C5C",
"#F08080", "#FA8072", "#E9967A", "#FFA07A", "#FF7F50", "#FF6347", "#FF8C00", "#FFA500", "#FF4500", "#DC143C",
"#FF0000", "#FF1493", "#FF00FF", "#FF69B4", "#FFB6C1", "#FFC0CB", "#DB7093", "#C71585", "#800080", "#8B008B",
"#9370DB", "#8A2BE2", "#4B0082", "#9400D3", "#9932CC", "#BA55D3", "#DA70D6", "#EE82EE", "#DDA0DD", "#D8BFD8",
"#E6E6FA", "#F8F8FF", "#F0F8FF", "#F5FFFA", "#F0FFF0", "#FAFAD2", "#FFFACD", "#FFF8DC", "#FFFFE0", "#FFFFF0",
"#FFFAF0", "#FAF0E6", "#FDF5E6", "#FAEBD7", "#FFE4C4", "#FFDAB9", "#FFEFD5", "#FFF5EE", "#FFF0F5", "#FFE4E1"
);
var KE_IMAGE_ALIGN_TABLE = Array(
"baseline", "top", "middle", "bottom", "texttop", "absmiddle", "absbottom", "left", "right"
);
var KE_OBJ_NAME;
var KE_SELECTION;
var KE_RANGE;
var KE_RANGE_TEXT;
var KE_EDITFORM_DOCUMENT;
var KE_IMAGE_DOCUMENT;
var KE_FLASH_DOCUMENT;
var KE_MEDIA_DOCUMENT;
var KE_REAL_DOCUMENT;
var KE_LINK_DOCUMENT;
var KE_BROWSER;
var KE_TOOLBAR_ICON;
function KindGetBrowser()
{
var browser = '';
var agentInfo = navigator.userAgent.toLowerCase();
if (agentInfo.indexOf("msie") > -1) {
var re = new RegExp("msie\\s?([\\d\\.]+)","ig");
var arr = re.exec(agentInfo);
if (parseInt(RegExp.$1) >= 5.5) {
browser = 'IE';
}
} else if (agentInfo.indexOf("firefox") > -1) {
browser = 'FF';
} else if (agentInfo.indexOf("netscape") > -1) {
var temp1 = agentInfo.split(' ');
var temp2 = temp1[temp1.length-1].split('/');
if (parseInt(temp2[1]) >= 7) {
browser = 'NS';
}
} else if (agentInfo.indexOf("gecko") > -1) {
browser = 'ML';
} else if (agentInfo.indexOf("opera") > -1) {
var temp1 = agentInfo.split(' ');
var temp2 = temp1[0].split('/');
if (parseInt(temp2[1]) >= 9) {
browser = 'OPERA';
}
}
return browser;
}
function KindGetFileName(file, separator)
{
var temp = file.split(separator);
var len = temp.length;
var fileName = temp[len-1];
return fileName;
}
function KindGetFileExt(fileName)
{
var temp = fileName.split(".");
var len = temp.length;
var fileExt = temp[len-1].toLowerCase();
return fileExt;
}
function KindCheckImageFileType(file, separator)
{
if (separator == "/" && file.match(/http:\/\/.{3,}/) == null) {
alert(KE_LANG['INPUT_URL']);
return false;
}
var fileName = KindGetFileName(file, separator);
var fileExt = KindGetFileExt(fileName);
if (fileExt != 'gif' && fileExt != 'jpg' && fileExt != 'png' && fileExt != 'bmp') {
alert(KE_LANG['INVALID_IMAGE']);
return false;
}
return true;
}
function KindCheckFlashFileType(file, separator)
{
if (file.match(/http:\/\/.{3,}/) == null) {
alert(KE_LANG['INPUT_URL']);
return false;
}
var fileName = KindGetFileName(file, "/");
var fileExt = KindGetFileExt(fileName);
if (fileExt != 'swf') {
alert(KE_LANG['INVALID_FLASH']);
return false;
}
return true;
}
function KindCheckMediaFileType(cmd, file, separator)
{
if (file.match(/http:\/\/.{3,}/) == null) {
alert(KE_LANG['INPUT_URL']);
return false;
}
var fileName = KindGetFileName(file, "/");
var fileExt = KindGetFileExt(fileName);
if (cmd == 'KE_REAL') {
if (fileExt != 'rm' && fileExt != 'rmvb') {
alert(KE_LANG['INVALID_REAL']);
return false;
}
} else {
if (fileExt != 'mp3' && fileExt != 'wav' && fileExt != 'wma' && fileExt != 'wmv' && fileExt != 'mid' && fileExt != 'avi' && fileExt != 'mpg' && fileExt != 'asf') {
alert(KE_LANG['INVALID_MEDIA']);
return false;
}
}
return true;
}
function KindHtmlToXhtml(str)
{
str = str.replace(/<br.*?>/gi, "<br />");
str = str.replace(/(<hr\s+[^>]*[^\/])(>)/gi, "$1 />");
str = str.replace(/(<img\s+[^>]*[^\/])(>)/gi, "$1 />");
str = str.replace(/(<\w+)(.*?>)/gi, function ($0,$1,$2) {
return($1.toLowerCase() + KindConvertAttribute($2));
}
);
str = str.replace(/(<\/\w+>)/gi, function ($0,$1) {
return($1.toLowerCase());
}
);
return str;
}
function KindConvertAttribute(str)
{
if (KE_SAFE_MODE == true) {
str = KindClearAttributeScriptTag(str);
}
return str;
}
function KindClearAttributeScriptTag(str)
{
var re = new RegExp("(\\son[a-z]+=)[\"']?[^>]*?[^\\\\\>][\"']?([\\s>])","ig");
str = str.replace(re, function ($0,$1,$2) {
return($1.toLowerCase() + "\"\"" + $2);
}
);
return str;
}
function KindClearScriptTag(str)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -