⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kindeditor.js

📁 基于浏览器的简单的所见即所得(WYSWYG)HTML编辑器
💻 JS
📖 第 1 页 / 共 5 页
字号:
/**************************************************************
KindEditor 2.4
WYSIWYG HTML Editor
Copyright (c) 2006 kindsoft.net

Author: Roddy(luolonghao@gmail.com)
Created: 2006/07/20
Last Modified: 2006/08/19
**************************************************************/

var SITE_DOMAIN;
var IMAGE_PATH;
var ICON_PATH;
var IMAGE_ATTACH_PATH;
var IMAGE_UPLOAD_CGI;
var MENU_BORDER_COLOR;
var MENU_BG_COLOR;
var MENU_TEXT_COLOR;
var MENU_SELECTED_COLOR;
var TOOLBAR_BORDER_COLOR;
var TOOLBAR_BG_COLOR;
var FORM_BORDER_COLOR;
var FORM_BG_COLOR;
var BUTTON_COLOR;
var OBJ_NAME;
var SELECTION;
var RANGE;
var RANGE_TEXT;
var EDITFORM_DOCUMENT;
var IMAGE_DOCUMENT;
var FLASH_DOCUMENT;
var MEDIA_DOCUMENT;
var REAL_DOCUMENT;
var LINK_DOCUMENT;
var BROWSER;
var TOOLBAR_ICON;
var EDITOR_TYPE;
var SAFE_MODE;
var UPLOAD_MODE;

var MSG_INPUT_URL = "请输入正确的URL地址。";
var MSG_SELECT_IMAGE = "请选择图片。";
var MSG_INVALID_IMAGE = "只能选择GIF,JPG,PNG,BMP格式的图片,请重新选择。";
var MSG_INVALID_FLASH = "只能选择SWF格式的文件,请重新选择。";
var MSG_INVALID_MEDIA = "只能选择MP3,WAV,WMA,WMV,MID,AVI,MPG,ASF格式的文件,请重新选择。";
var MSG_INVALID_REAL = "只能选择RM,RMVB格式的文件,请重新选择。";
var MSG_INVALID_WIDTH = "宽度不是数字,请重新输入。";
var MSG_INVALID_HEIGHT = "高度不是数字,请重新输入。";
var MSG_INVALID_BORDER = "边框不是数字,请重新输入。";
var MSG_INVALID_HSPACE = "横隔不是数字,请重新输入。";
var MSG_INVALID_VSPACE = "竖隔不是数字,请重新输入。";
var STR_TITLE = "描述";
var STR_WIDTH = "宽";
var STR_HEIGHT = "高";
var STR_BORDER = "边";
var STR_ALIGN = "对齐方式";
var STR_HSPACE = "横隔";
var STR_VSPACE = "竖隔";
var STR_BUTTON_CONFIRM = "确定";
var STR_BUTTON_CANCEL = "取消";
var STR_BUTTON_PREVIEW = "预览";
var STR_BUTTON_LISTENING = "试听";
var STR_IMAGE_LOCAL = "本地";
var STR_IMAGE_REMOTE = "远程";
var STR_LINK_BLANK = "新窗口";
var STR_LINK_NOBLANK = "当前窗口";
var STR_LINK_TARGET = "目标";
var STR_ABOUT = "访问技术支持网站";
var STR_INPUT_CONTENT = "请输入内容";

var EDITOR_FONT_FAMILY = "SimSun";

var 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 ZOOM_TABLE = Array('250%', '200%', '150%', '120%', '100%', '80%', '50%');
var TITLE_TABLE = Array(
					Array('H1', '标题 1'), 
					Array('H2', '标题 2'), 
					Array('H3', '标题 3'), 
					Array('H4', '标题 4'), 
					Array('H5', '标题 5'), 
					Array('H6', '标题 6')
					);
var 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 SPECIAL_CHARACTER = Array('§','№','☆','★','○','●','◎','◇','◆','□','℃','‰','■','△','▲','※',
							'→','←','↑','↓','〓','¤','°','#','&','@','\','︿','_',' ̄','―','α',
							'β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ',
							'σ','τ','υ','φ','χ','ψ','ω','≈','≡','≠','=','≤','≥','<','>','≮',
							'≯','∷','±','+','-','×','÷','/','∫','∮','∝','∞','∧','∨','∑','∏',
							'∪','∩','∈','∵','∴','⊥','∥','∠','⌒','⊙','≌','∽','〖','〗','【','】','(',')','[',']');
var TOP_TOOLBAR_ICON = Array(
						Array('KIND_SOURCE', 'source.gif', '视图转换'),
						Array('KIND_PREVIEW', 'preview.gif', '预览'),
						Array('KIND_ZOOM', 'zoom.gif', '显示比例'),
						Array('KIND_PRINT', 'print.gif', '打印'),
						Array('KIND_UNDO', 'undo.gif', '回退'),
						Array('KIND_REDO', 'redo.gif', '前进'),
						Array('KIND_CUT', 'cut.gif', '剪切'),
						Array('KIND_COPY', 'copy.gif', '复制'),
						Array('KIND_PASTE', 'paste.gif', '粘贴'),
						Array('KIND_SELECTALL', 'selectall.gif', '全选'),
						Array('KIND_JUSTIFYLEFT', 'justifyleft.gif', '左对齐'),
						Array('KIND_JUSTIFYCENTER', 'justifycenter.gif', '居中'),
						Array('KIND_JUSTIFYRIGHT', 'justifyright.gif', '右对齐'),
						Array('KIND_JUSTIFYFULL', 'justifyfull.gif', '两端对齐'),
						Array('KIND_NUMBEREDLIST', 'numberedlist.gif', '编号'),
						Array('KIND_UNORDERLIST', 'unorderedlist.gif', '项目符号'),
						Array('KIND_INDENT', 'indent.gif', '减少缩进'),
						Array('KIND_OUTDENT', 'outdent.gif', '增加缩进'),
						Array('KIND_SUBSCRIPT', 'subscript.gif', '下标'),
						Array('KIND_SUPERSCRIPT', 'superscript.gif', '上标'),
						Array('KIND_DATE', 'date.gif', '日期'),
						Array('KIND_TIME', 'time.gif', '时间')
				  );
var BOTTOM_TOOLBAR_ICON = Array(
						Array('KIND_TITLE', 'title.gif', '标题'),
						Array('KIND_FONTNAME', 'font.gif', '字体'),
						Array('KIND_FONTSIZE', 'fontsize.gif', '文字大小'),
						Array('KIND_TEXTCOLOR', 'textcolor.gif', '文字颜色'),
						Array('KIND_BGCOLOR', 'bgcolor.gif', '文字背景'),
						Array('KIND_BOLD', 'bold.gif', '粗体'),
						Array('KIND_ITALIC', 'italic.gif', '斜体'),
						Array('KIND_UNDERLINE', 'underline.gif', '下划线'),
						Array('KIND_STRIKE', 'strikethrough.gif', '删除线'),
						Array('KIND_REMOVE', 'removeformat.gif', '删除格式'),
						Array('KIND_IMAGE', 'image.gif', '图片'),
						Array('KIND_FLASH', 'flash.gif', 'Flash'),
						Array('KIND_MEDIA', 'media.gif', 'Windows Media Player'),
						Array('KIND_REAL', 'real.gif', 'Real Player'),
						Array('KIND_LAYER', 'layer.gif', '层'),
						Array('KIND_TABLE', 'table.gif', '表格'),
						Array('KIND_SPECIALCHAR', 'specialchar.gif', '特殊字符'),
						Array('KIND_HR', 'hr.gif', '横线'),
						Array('KIND_ICON', 'emoticons.gif', '笑脸'),
						Array('KIND_LINK', 'link.gif', '创建超级连接'),
						Array('KIND_UNLINK', 'unlink.gif', '删除超级连接'),
						Array('KIND_ABOUT', 'about.gif', '关于')
				  );
var SIMPLE_TOOLBAR_ICON = Array(
						Array('KIND_FONTNAME', 'font.gif', '字体'),
						Array('KIND_FONTSIZE', 'fontsize.gif', '文字大小'),
						Array('KIND_TEXTCOLOR', 'textcolor.gif', '文字颜色'),
						Array('KIND_BGCOLOR', 'bgcolor.gif', '文字背景'),
						Array('KIND_BOLD', 'bold.gif', '粗体'),
						Array('KIND_ITALIC', 'italic.gif', '斜体'),
						Array('KIND_UNDERLINE', 'underline.gif', '下划线'),
						Array('KIND_JUSTIFYLEFT', 'justifyleft.gif', '左对齐'),
						Array('KIND_JUSTIFYCENTER', 'justifycenter.gif', '居中'),
						Array('KIND_JUSTIFYRIGHT', 'justifyright.gif', '右对齐'),
						Array('KIND_IMAGE', 'image.gif', '图片'),
						Array('KIND_LAYER', 'layer.gif', '层'),
						Array('KIND_HR', 'hr.gif', '横线'),
						Array('KIND_ICON', 'emoticons.gif', '笑脸'),
						Array('KIND_LINK', 'link.gif', '创建超级连接'),
						Array('KIND_ABOUT', 'about.gif', '关于')
				  );
var POPUP_MENU_TABLE = Array("KIND_ZOOM", "KIND_TITLE", "KIND_FONTNAME", "KIND_FONTSIZE", "KIND_TEXTCOLOR", "KIND_BGCOLOR", 
							"KIND_LAYER", "KIND_TABLE", "KIND_HR", "KIND_ICON", "KIND_SPECIALCHAR", "KIND_ABOUT", 
							"KIND_IMAGE", "KIND_FLASH", "KIND_MEDIA", "KIND_REAL", "KIND_LINK");
var 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 IMAGE_ALIGN_TABLE = new Array("baseline", "top", "middle", "bottom", "texttop", "absmiddle", "absbottom", "left", "right");

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(MSG_INPUT_URL);
		return false;
	}
	var fileName = KindGetFileName(file, separator);
	var fileExt = KindGetFileExt(fileName);
	if (fileExt != 'gif' && fileExt != 'jpg' && fileExt != 'png' && fileExt != 'bmp') {
		alert(MSG_INVALID_IMAGE);
		return false;
	}
	return true;
}
function KindCheckFlashFileType(file, separator)
{
	if (file.match(/http:\/\/.{3,}/) == null) {
		alert(MSG_INPUT_URL);
		return false;
	}
	var fileName = KindGetFileName(file, "/");
	var fileExt = KindGetFileExt(fileName);
	if (fileExt != 'swf') {
		alert(MSG_INVALID_FLASH);
		return false;
	}
	return true;
}
function KindCheckMediaFileType(cmd, file, separator)
{
	if (file.match(/http:\/\/.{3,}/) == null) {
		alert(MSG_INPUT_URL);
		return false;
	}
	var fileName = KindGetFileName(file, "/");
	var fileExt = KindGetFileExt(fileName);
	if (cmd == 'KIND_REAL') {
		if (fileExt != 'rm' && fileExt != 'rmvb') {
			alert(MSG_INVALID_REAL);
			return false;
		}
	} else {
		if (fileExt != 'mp3' && fileExt != 'wav' && fileExt != 'wma' && fileExt != 'wmv' && fileExt != 'mid' && fileExt != 'avi' && fileExt != 'mpg' && fileExt != 'asf') {
			alert(MSG_INVALID_MEDIA);
			return false;
		}
	}
	return true;
}
function KindImageToObj(str)
{
	str = str.replace(/<img([^>]*id="flashpreviewimg"[^>]*)>/gi, function ($0,$1) {
					var width = $1.match(/width:\s?(\d+)/i);
					var height = $1.match(/height:\s?(\d+)/i);
					var url = $1.match(/alt="([^"\s>]+)"/i);
					var ret = KindGetFlashHtmlTag(url[1], width[1], height[1]);
					return ret;
				}
			);
	str = str.replace(/<img([^>]*id="mediapreviewimg"[^>]*)>/gi, function ($0,$1) {
					var width = $1.match(/width:\s?(\d+)/i);
					var height = $1.match(/height:\s?(\d+)/i);
					var url = $1.match(/alt="([^"\s>]+)"/i);
					var title = $1.match(/title="([^"\s>]+)"/i);
					var ret = KindGetMediaHtmlTag('KIND_MEDIA', url[1], width[1], height[1], title[1]);
					return ret;
				}
			);
	str = str.replace(/<img([^>]*id="realpreviewimg"[^>]*)>/gi, function ($0,$1) {
					var width = $1.match(/width:\s?(\d+)/i);
					var height = $1.match(/height:\s?(\d+)/i);
					var url = $1.match(/alt="([^"\s>]+)"/i);
					var title = $1.match(/title="([^"\s>]+)"/i);
					var ret = KindGetMediaHtmlTag('KIND_REAL', url[1], width[1], height[1], title[1]);
					return ret;
				}
			);
	return str;
}
function KindObjToImage(str)
{
	str = str.replace(/<object([^>]*type="application\/x-shockwave-flash"[^>]*)>.*?<\/object>/gi, function ($0,$1) {
					var url = IMAGE_PATH + 'flashpreview.gif';
					var width = $1.match(/width="([^"\s>]+)"/i);
					var height = $1.match(/height="([^"\s>]+)"/i);
					var alt = $1.match(/data="([^"\s>]+)"/i);
					var ret = '<img id="flashpreviewimg" src="'+url+'" style="' + 
							'width:'+width[1]+'px;height:'+height[1]+'px;" alt="'+alt[1]+'" border="0">';
					return ret;
				}
			);
	str = str.replace(/<object([^>]*type="video\/x-ms-asf-plugin"[^>]*)>(.*?)<\/object>/gi, function ($0,$1,$2) {
					var url = IMAGE_PATH + 'mediapreview.gif';
					var width = $1.match(/width="([^"\s>]+)"/i);
					var height = $1.match(/height="([^"\s>]+)"/i);
					var alt = $1.match(/data="([^"\s>]+)"/i);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -