📄 editor.js
字号:
//Emoticon_Part Start
var YuZiCellWidth = 20;
var YuZiCellHeight = 20;
var YuZiRowNum = 4;
var YuZiColNum = 9;
var YuZiCurTab = 0;
var YuZiCurPage = 0;
var YuZiShowWidth = 75;
var YuZiShowHeight = 75;
var YuZiSnapThumb = 0; //需要截取缩略图时候,把这个改为1
var YuZiCustomSizeLock = 1; //是否开启自定义大小
var IsLoaded = false;
var EmoticonNode,YuZiTabs;
function LoadEmoticonXML(){
var XmlDom = GetXmlDom();
XmlDom.async = false;
XmlDom.load("Xml/Emoticons.XML");
var XmlDomRoot = XmlDom.documentElement;
EmoticonNode = XmlDomRoot.getElementsByTagName('Emoticon');
YuZiTabs = EmoticonNode.length //表情——组数
IsLoaded = true;
}
var gbMoNeedHidden = false;
function Gel(id, obj) {
obj = (obj == null ? document : obj);
return obj.getElementById(id);
}
function BbsxpCalcCurPages() {//每组表情页数
var iDLen = EmoticonNode[YuZiCurTab].getElementsByTagName('ICON').length; //每组表情数
var iPLen = YuZiRowNum * YuZiColNum;
var fv = iDLen / iPLen;
if (iDLen % iPLen == 0) {
return fv == 0 ? 1 : parseInt(fv);
}
else {
return Math.round(fv + 0.5);
}
}
function BbsxpJustifyImg(oImg, iWidth, iHeight, bPos) {//单元格表情按比例缩放
var oNewImg = new Image();
oNewImg.src = oImg.src;
var w = oNewImg.width;
var h = oNewImg.height;
var wb = w / iWidth;
var hb = h / iHeight;
if (wb > 1 || hb > 1) {//等比例缩少
if (wb > hb) {
oImg.width = iWidth;
oImg.height = h * iHeight / w;
}
else {
oImg.width = w * iWidth / h;
oImg.height = iHeight;
}
h = oImg.height;
}
else {
oImg.width = w;
oImg.height = h;
}
if (bPos) {
oImg.style.top = ((iHeight - h) / 2) + "px";
}
return;
}
function EmoticonHidePanel() {
try{
if (gbMoNeedHidden) {
Gel("moShowPanel").style.display = "none";
}
}catch(e){}
}
function BbsxpEmoticonShow(sUrl, iOffset, oldObj) {
var obj = Gel("moShowPanel");
if (sUrl == null || sUrl == "") {
gbMoNeedHidden = true;
setTimeout("EmoticonHidePanel()", 300);
}
else if (EmoticonCurObj == oldObj){
gbMoNeedHidden = false;
var div = Gel("moDivContainer");
obj.style.top = parseInt(div.offsetTop) + "px";
if (iOffset < YuZiColNum / 2) {
obj.style.left = (parseInt(div.offsetLeft) + parseInt(div.offsetWidth) - YuZiShowWidth) + "px";
}
else {
obj.style.left = div.offsetLeft + "px";
}
obj.innerHTML = "<img src='" + sUrl + "' width=" + YuZiShowWidth + " height=" + YuZiShowHeight + " onload='BbsxpJustifyImg(this, " + YuZiShowWidth + "," + YuZiShowHeight + ", true);this.style.zIndex = 1;Gel(\"moShowLoadDiv\").style.display = \"none\";' style='position:relative;'></img><div id='moShowLoadDiv' style='text-align:center;position:absolute;left:0;top:0;background:#fff;width:" + YuZiShowWidth + "px;height:" + YuZiShowHeight + "px;'><div style='font:normal 12px Verdana;color:#888;margin-top:" + (YuZiShowHeight/2 - 6) + "px;'>loading...</div></div>";
obj.style.display = "";
}
}
var EmoticonCurObj = null;
function BbsxpOnMouseOver(obj, iOffset) {
if (YuZiSnapThumb) {return ;}
obj.style.border='1px solid #000080';
EmoticonCurObj = obj;
setTimeout(function() {try{BbsxpEmoticonShow(obj.getElementsByTagName("IMG")[0].getAttribute("sval"), iOffset, obj);}catch(e){}}, 300);
}
function BbsxpOnMouseOut(obj) {
if (YuZiSnapThumb) {return ;}
obj.style.border='1px solid #F6F6F6';
EmoticonCurObj = null;
BbsxpEmoticonShow();
}
function BbsxpGetPageText() {
return (YuZiCurPage + 1) + "/" + BbsxpCalcCurPages();
}
function BbsxpRefreshData() {
Gel("moTabContainer").innerHTML = BbsxpTab();
Gel("moDivContainer").innerHTML = BbsxpTable();
Gel("moPageText").innerHTML = BbsxpGetPageText();
}
function BbsxpChangeTab(iTab) {
if (iTab >= YuZiTabs || iTab == YuZiCurTab) {
return;
}
YuZiCurPage = 0;
YuZiCurTab = iTab;
BbsxpRefreshData();
}
function BbsxpNextPage() {
if (YuZiCurPage + 1 >= BbsxpCalcCurPages()) {
return ;
}
YuZiCurPage += 1;
BbsxpRefreshData();
}
function BbsxpPrevPage() {
if (YuZiCurPage <= 0) {
return ;
}
YuZiCurPage -= 1;
BbsxpRefreshData();
}
function BbsxpCell(iCurTab, iCurPage, iNum, iOffset) {
iNum = iCurPage * YuZiRowNum * YuZiColNum + iNum;
var data = EmoticonNode[iCurTab].getElementsByTagName('ICON'); //第 iCurTab 组表情数据
if (iNum >= data.length) {
return "";
}
var sSrc = EmoticonNode[iCurTab].getAttributeNode('PathName').nodeValue + data[iNum].getAttributeNode('FileName').nodeValue; //获取 第 iCurTab 组、第 iNum 个 表情符号的路径
return "<img onclick='BBSXPExecute(\"YuZi_ICON_END\", \"" + sSrc + "\");' sval='" + sSrc + "' src='" + sSrc + "' title='" + GetNodeValue(data[iNum]) + "' width=" + YuZiCellWidth + " height=" + YuZiCellHeight + " onload='BbsxpJustifyImg(this, " + YuZiCellWidth + "," + YuZiCellHeight + ", true);' style='position:relative;cursor:pointer'></img>";
}
function BbsxpTable() {
var pdivh = "<div style='width:" + YuZiCellWidth + "px;height:" + YuZiCellHeight + "px;'>";
var code = "<table cellpadding=0 cellspacing=" + (YuZiSnapThumb ? 0 : 1) + " bgcolor=#DFE6F6>";
for (var i = 0; i < YuZiRowNum; i++) {
code += "<tr>";
for (var j = 0; j < YuZiColNum; j++) {
var cell = BbsxpCell(YuZiCurTab, YuZiCurPage, i * YuZiColNum + j, j);
code += "<td align=center valign=middle width=" + (YuZiCellWidth + (YuZiSnapThumb ? 0 : 2)) + "px height=" + (YuZiCellHeight + (YuZiSnapThumb ? 0 : 2)) + "px style='background:#f6f6f6;padding:" + (YuZiSnapThumb ? 0 : 1) + "px;border:" + (YuZiSnapThumb ? 0 : 1) + "px solid #F6F6F6;' " + (cell != "" ? "onmouseover='BbsxpOnMouseOver(this, " + j + ");' onmouseout='BbsxpOnMouseOut(this);'>" + pdivh + cell : ">" + pdivh) + "</div></td>";
}
code += "</tr>";
}
return code + "</table>";
}
function BbsxpTab() {
if (YuZiCustomSizeLock) {//根据定义大小,重定向:宽,高,行,列
YuZiCellWidth = parseInt(EmoticonNode[YuZiCurTab].getAttributeNode('Width').nodeValue);
YuZiCellHeight = parseInt(EmoticonNode[YuZiCurTab].getAttributeNode('Height').nodeValue);
YuZiRowNum = parseInt(EmoticonNode[YuZiCurTab].getAttributeNode('TableRow').nodeValue);
YuZiColNum = parseInt(EmoticonNode[YuZiCurTab].getAttributeNode('TableCol').nodeValue);
}
var code = "";
for (var i = 0; i < YuZiTabs; i++) {
code += "<span style='color:" + (YuZiCurTab == i ? "#000;border:1px solid #DFE6F6;font-weight:bold;border-bottom:1px solid #f6f6f6;border-top:2px solid #FFC83C" : "#000" ) + ";padding:3px 7px 2px 7px;cursor:pointer;' onclick='BbsxpChangeTab(" + i + ")' unselectable='on'>" + EmoticonNode[i].getAttributeNode('CategoryName').nodeValue + "</span>";
}
return code;
}
function BbsxpBtnMouse(obj, down) {
var s = obj.style;
s.position = "relative";
s.top = down ? "1px" : "0px";
s.left = down ? "1px" : "0px";
}
function BBSXPCube() {
if(!IsLoaded)LoadEmoticonXML();
var str;
str = "<div style='padding:10px 5px 0 5px;' unselectable='on'>";
str += "<div id='moTabContainer' style='font:normal 12px Verdana;color:#000;padding:2px 6px' unselectable='on'>" + BbsxpTab() + "</div>";
str += "<div id='moDivContainer' unselectable='on'>" + BbsxpTable() + "</div>";
str += "<div align=right style='text-aling:right;font-size:12px;padding:5px 0 5px 0;color:#000;' unselectable='on'>";
str += "<span style='float:left'><a href='http://www.biaoqing.com/' target=_blank title='表情网'>更多表情</a></span>"
str += "<span style='margin:0 10px 0 0;color:#000;font:normal 12px Verdana;' id='moPageText' unselectable='on'>" + BbsxpGetPageText() + "</span>";
str += "<span style='cursor:pointer;margin:0 2px 0 2px;font-weight:bold;background:#eff7ff;border:1px solid #8ba8c8;color:#000;padding:2px 8px 0 8px' onclick='BbsxpPrevPage();' onmousedown='BbsxpBtnMouse(this,1);' onmouseup='BbsxpBtnMouse(this,0);' title='上一页' unselectable='on'><</span>";
str += "<span style='cursor:pointer;margin:0 2px 0 2px;font-weight:bold;background:#eff7ff;border:1px solid #8ba8c8;color:#000;padding:2px 8px 0 8px' onclick='BbsxpNextPage();' onmousedown='BbsxpBtnMouse(this,1);' onmouseup='BbsxpBtnMouse(this,0);' title='下一页' unselectable='on'>></span>";
str += "</div>";
str += "<div id='moShowPanel' style='background:#fff;position:absolute;left:0;top:0;border:1px solid #004B97;width:" + YuZiShowWidth + "px;height:" + YuZiShowHeight + "px;text-align:center;display:none' unselectable='on'></div>";
str += "<div id='moMainLoadDiv' style='font:normal 12px Verdana;display:none;position:absolute;text-valign:center;' unselectable='on'><img src='images/loading.gif' width=16 height=16>loading...</div>";
str += "</div>";
str += "<img id='moPPL' style='display:none;'/>";
return str;
}
//Emoticon_Part End
var YuZi_SAFE_MODE = false; // true or false
var YuZi_CurrentMode = "DESIGN";
var YuZi_IsChangeMode = false;
var YuZi_TdHeight = -1;
var YuZi_FONT_FAMILY = "Courier New";
var YuZi_WIDTH = "100%";
var YuZi_HEIGHT = "100%";
var YuZi_SKIN_PATH = "Images/Editor/";
var YuZi_MENU_BORDER_COLOR = '#AAAAAA';
var YuZi_MENU_BG_COLOR = '#EFEFEF';
var YuZi_MENU_TEXT_COLOR = '#222222';
var YuZi_MENU_SELECTED_COLOR = '#CCCCCC';
var YuZi_TOOLBAR_BORDER_COLOR = '#DDDDDD';
var YuZi_TOOLBAR_BG_COLOR = '#EFEFEF';
var YuZi_FORM_BORDER_COLOR = '#DDDDDD';
var YuZi_FORM_BG_COLOR = '#FFFFFF';
var YuZi_BUTTON_COLOR = '#AAAAAA';
var YuZi_ForeColor = '#000000';
var YuZi_BackColor = '#FFFFFF';
var YuZi_LANG = {
INPUT_URL : "请输入正确的URL地址。",
CONFIRM : "确定",
CANCEL : "取消",
PREVIEW : "预览",
REMOTE : "URL:",
NEW_WINDOW : "新窗口",
CURRENT_WINDOW : "当前窗口",
TARGET : "目标",
SUBJECT : "标题",
CurrentMode : "编辑器处于代码状态下不能发送内容!",
SubjectMinLen : "标题不能小于 2 个字符!",
SubjectMaxLen : "标题不能多于 100 个字符!",
CategoryMaxLen : "类别不能多于 25 个字符!",
BodyMinLen : "内容不能小于 2 个字符!",
BodyMaxLen : "内容不能超过 60000 个字符!",
VerifyCode : "请输入验证码!",
DesignMode : "设计模式",
CodeMode : "代码模式",
AddEditorArea : "增大编辑区",
ReduceEditorArea: "减小编辑区",
Search : "查 找:",
Replace : "替换为:",
ReplaceButton : "替换",
Case : "大小写:",
CaseChkBox : "区分大小写",
WIDTH : "宽度",
HEIGHT : "高度",
Transparent : "透明",
AutoStart : "自动播放",
StatusBar : "显示状态栏",
ED2K : "ED2K链接地址(每行表示一个ED2K链接地址)",
CopyPaste : "请用鼠标右击完成 剪切/复制/粘贴 的操作"
}
var YuZi_FONT_NAME = Array(
Array('宋体', '宋体'),
Array('黑体', '黑体'),
Array('楷体_GB2312', '楷体_GB2312'),
Array('隶书', '隶书'),
Array('幼圆', '幼圆'),
Array('新宋体', '新宋体'),
Array('Arial', 'Arial'),
Array('Arial Black', 'Arial Black'),
Array('Courier New','Courier New'),
Array('Garamond','Garamond'),
Array('Georgia','Georgia'),
Array('Tahoma','Tahoma'),
Array('Verdana', 'Verdana'),
Array('Times New Roman', 'Times New Roman'),
Array('GulimChe', 'GulimChe'),
Array('MS Gothic', 'MS Gothic')
);
var YuZi_SPECIAL_CHARACTER = Array(
'§','№','☆','★','○','●','◎','◇','◆','□','℃','‰','■','△','▲','※',
'→','←','↑','↓','〓','¤','°','#','&','@','\','︿','_',' ̄','―','α',
'β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ',
'σ','τ','υ','φ','χ','ψ','ω','≈','≡','≠','=','≤','≥','<','>','≮',
'≯','∷','±','+','-','×','÷','/','∫','∮','∝','∞','∧','∨','∑','∏',
'∪','∩','∈','∵','∴','⊥','∥','∠','⌒','⊙','≌','∽','〖','〗',
'【','】','(',')','[',']'
);
var YuZi_TOP_TOOLBAR_ICON = Array(
Array('YuZi_TITLE', 'title.gif', '标题'),
Array('YuZi_FONTNAME', 'font.gif', '字体'),
Array('YuZi_FONTSIZE', 'fontsize.gif', '文字大小'),
Array('YuZi_TEXTCOLOR', 'fbcolor.gif', '文字颜色'),
Array('YuZi_BGCOLOR', 'fgcolor.gif', '文字背景颜色'),
Array('YuZi_BOLD', 'bold.gif', '粗体'),
Array('YuZi_ITALIC', 'italic.gif', '斜体'),
Array('YuZi_UNDERLINE', 'underline.gif', '下划线'),
Array('YuZi_STRIKE', 'strikethrough.gif', '删除线'),
Array('YuZi_JUSTIFYLEFT', 'justifyleft.gif', '左对齐'),
Array('YuZi_JUSTIFYCENTER', 'justifycenter.gif', '居中'),
Array('YuZi_JUSTIFYRIGHT', 'justifyright.gif', '右对齐'),
Array('YuZi_JUSTIFYFULL', 'justifyfull.gif', '两端对齐'),
Array('YuZi_NUMBEREDLIST', 'numberedlist.gif', '编号'),
Array('YuZi_UNORDERLIST', 'unorderedlist.gif', '项目符号'),
Array('YuZi_Paragraph','Paragraph.gif','段落'),
Array('YuZi_INDENT', 'indent.gif', '减少缩进'),
Array('YuZi_OUTDENT', 'outdent.gif', '增加缩进'),
Array('YuZi_SUBSCRIPT', 'subscript.gif', '下标'),
Array('YuZi_SUPERSCRIPT', 'superscript.gif', '上标')
);
var YuZi_BOTTOM_TOOLBAR_ICON = Array(
Array('YuZi_LINK', 'link.gif', '创建超级链接'),
Array('YuZi_UNLINK', 'unlink.gif', '删除超级链接'),
Array('YuZi_ED2K', 'ed2k.gif', '创建ED2K链接'),
Array('YuZi_SPECIALCHAR', 'specialchar.gif', '插入特殊字符'),
Array('YuZi_ICON', 'emoticons.gif', '插入表情'),
Array('YuZi_TABLE', 'table.gif', '插入表格'),
Array('YuZi_IMAGE', 'image.gif', '插入图片'),
Array('YuZi_Media', 'Media.gif', '插入 FLASH、MediaPlayer、RealPlayer 文件'),
Array('Break','Break.gif','换行符'),
Array('YuZi_HR', 'hr.gif', '横线'),
Array('YuZi_Replace','replace.gif','替换'),
Array('YuZi_CUT', 'cut.gif', '剪切'),
Array('YuZi_COPY', 'copy.gif', '复制'),
Array('YuZi_PASTE', 'paste.gif', '粘贴'),
Array('YuZi_ClearUP','cleanup.gif','清洁代码'),
Array('YuZi_UNDO', 'undo.gif', '撤消'),
Array('YuZi_REDO', 'redo.gif', '恢复'),
Array('YuZi_SELECTALL', 'selectall.gif', '全选'),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -