www.gusucode.com > Destoon B2B仿淘宝电子商务网站 UTF8 v6.0源码程序 > destoon/file/script/editor.js
/* [Destoon B2B System] Copyright (c) 2008-2015 www.destoon.com This is NOT a freeware, use is subject to license.txt */ function EditorAPI(i, k, v) { var i = i ? i : 'content'; var k = k ? k : 'len'; var v = v ? v : ''; switch(k) { case 'get': if(DTEditor == 'fckeditor') { return FCKeditorAPI.GetInstance(i).GetXHTML(true); } else if(DTEditor == 'kindeditor') { return editor.html(); } break; case 'set': if(DTEditor == 'fckeditor') { FCKeditorAPI.GetInstance(i).SetData(v); } else if(DTEditor == 'kindeditor') { editor.html(v); } break; case 'ins': if(DTEditor == 'fckeditor') { var o = FCKeditorAPI.GetInstance(i); if(o.EditMode == FCK_EDITMODE_WYSIWYG) {o.InsertHtml(v);} else {alert(L['wysiwyg_mode']);} } else if(DTEditor == 'kindeditor') { if(editor.designMode) {editor.insertHtml(v);} else {alert(L['wysiwyg_mode']);} } break; case 'len': if(DTEditor == 'fckeditor') { var o = FCKeditorAPI.GetInstance(i); var d = o.EditorDocument; var l ; if(document.all) { return d.body.innerText.length; } else { var r = d.createRange(); r.selectNodeContents(d.body); return r.toString().length; } } else if(DTEditor == 'kindeditor') { return editor.count('text'); } break; default: break; } } /* fckeditor if(DTEditor == 'fckeditor') { document.write('<div style="width:'+EDW+';height:11px;text-align:right;margin:-'+(isIE ? 15 : 13)+'px 0 0 -2px;"><img src="'+DTPath+'admin/image/resize.gif" width="11" height="11" style="cursor:n-resize;" onclick="fck_zi();" oncontextmenu="fck_zo();return false;" alt="" title="'+L['fck_zoom']+'"/></div>'); function fck_zi() {var h = Number(Dd(FCKID+'___Frame').height.replace('px', '')); h = h + 200; Dd(FCKID+'___Frame').height = h+'px';} function fck_zo() {var h = Number(Dd(FCKID+'___Frame').height.replace('px', '')); h = h - 200; if(h > 200) Dd(FCKID+'___Frame').height = h+'px';} } */ /* draft */ if(EDD == 1) { var draft_html = ''; document.write('<div style="width:'+EDW+';color:#666666;">'); document.write('<a href="javascript:" onclick="draft_get_data();" class="t">'+L['data_recovery']+'</a>'); document.write(' | '); document.write('<a href="javascript:" onclick="draft_save_draft();" class="t">'+L['save_draft']+'</a>'); document.write(' | <span id="draft_switch"></span> <span id="draft_data_msg"></span>'); document.write('</div>'); function draft_get_data() {makeRequest('action=userdata&job=get&mid='+ModuleID, AJPath, '_draft_get_data');} function _draft_get_data() { if(xmlHttp.readyState==4 && xmlHttp.status==200) { if(xmlHttp.responseText) { if(confirm(lang(L['if_cover_data'], [xmlHttp.responseText.substring(0, 19)]))) EditorAPI('content', 'set', xmlHttp.responseText.substring(19, xmlHttp.responseText.length)); } else { alert(L['no_data']); } } } function draft_save_data() { var l = EditorAPI('content', 'len'); if(l < 10) return; var c = EditorAPI('content', 'get'); if(draft_html == c) return; makeRequest('action=userdata&mid='+ModuleID+'&content='+encodeURIComponent(c), AJPath); draft_html = c; var today = new Date(); Dd('draft_data_msg').innerHTML = '<img src="'+DTPath+'file/image/clock.gif"/>'+lang(L['draft_auto_saved'], [today.getHours(), today.getMinutes(), today.getSeconds()]); } function draft_save_draft() { var l = EditorAPI('content', 'len'); if(l < 10) {alert(lang(L['at_least_10_letters'], [l]));return;} if(confirm(L['stop_auto_save'])) { draft_stop(); makeRequest('action=userdata&mid='+ModuleID+'&content='+encodeURIComponent(EditorAPI('content', 'get')), AJPath); Dd('draft_data_msg').innerHTML = L['draft_saved']; window.setTimeout(function(){Dd('draft_data_msg').innerHTML = '';}, 3000); } } var draft_interval; function draft_init() { draft_interval = setInterval('draft_save_data()', 30000); Dd('draft_data_msg').innerHTML = ''; Dd('draft_switch').innerHTML = '<a href="javascript:" class="t" onclick="draft_stop();">'+L['stop_save']+'</a>'; } function draft_stop() { clearInterval(draft_interval); Dd('draft_data_msg').innerHTML = L['draft_save_stopped']; Dd('draft_switch').innerHTML = '<a href="javascript:" class="t" onclick="draft_init();">'+L['start_save']+'</a>'; } draft_init(); } /* paste image*/ if((UA.indexOf('chrome') != -1 || UA.indexOf('firefox') != -1) && !get_local('editor_paste_tip')) { function editor_paste_tip_close() {$('#editor_paste_tip').hide();set_local('editor_paste_tip', 1);} document.write('<span style="border:#E7D4AC 1px solid;background:#FFFCDC;padding:2px;color:#666666;" id="editor_paste_tip">'+L['tip_image']+'<a href="javascript:editor_paste_tip_close();void(0);" class="t">'+L['tip_know']+'</a></span>'); } if(UA.indexOf('chrome') != -1) { setTimeout(function() { if(DTEditor == 'fckeditor') { var o = FCKeditorAPI.GetInstance(EID); var d = o.EditorDocument; } else if(DTEditor == 'kindeditor') { var d = K('#'+EID);//Error } d.body.onpaste = function(e) { var clipboardData,items,item; if(e && (clipboardData=e.clipboardData) && (items=clipboardData.items) && (item=items[0]) && item.kind=='file' && item.type.match(/^image\//i)){ var blob = item.getAsFile(),reader = new FileReader(); reader.onload = function(){ EditorAPI(EID, 'ins', '<img src="'+event.target.result+'">'); } reader.readAsDataURL(blob); return false; } } var f = 0; d.body.ondragenter = function(e) { if(e.dataTransfer.types == 'Files') { f = 1; } } d.body.ondrop = function (e) { if(f) { var dataTransfer = e.dataTransfer,fileList, fileext; if(dataTransfer && (fileList = dataTransfer.files) && fileList.length > 0) { for(i = 0; i < fileList.length; i++) { //IMG ONLY fileext = ext(fileList[i].name); if(fileext != 'jpg' && fileext != 'gif' && fileext != 'png' && fileext != 'bmp' && fileext != 'jpeg') continue; reader = new FileReader(); reader.onload = function(){ EditorAPI(EID, 'ins', '<img src="'+event.target.result+'">'); } reader.readAsDataURL(fileList[i]); } } } } d.body.ondragover = function(e) { // } }, 3000); } /* clear tag*/ function clear_tag() { var html = EditorAPI(EID, 'get'); if(html == '') return; var leng = html.length; if(leng < 100) return; if(!isIE && html.indexOf('mso-') != -1 && html.indexOf('<o:p>') != -1) {//Clear MS Word html = html.replace(/<o:p>\s*<\/o:p>/g, ''); html = html.replace(/<o:p>.*?<\/o:p>/g, ' '); html = html.replace(/\s*mso-[^:]+:[^;"]+;?/gi, ''); html = html.replace(/\s*MARGIN: 0cm 0cm 0pt\s*;/gi, ''); html = html.replace(/\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\""); html = html.replace(/\s*TEXT-INDENT: 0cm\s*;/gi, ''); html = html.replace(/\s*TEXT-INDENT: 0cm\s*"/gi, "\""); html = html.replace(/\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\""); html = html.replace(/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\""); html = html.replace(/\s*FONT-VARIANT: [^\s;]+;?"/gi, "\""); html = html.replace(/\s*tab-stops:[^;"]*;?/gi, ''); html = html.replace(/\s*tab-stops:[^"]*/gi, ''); html = html.replace(/\s*face="[^"]*"/gi, ''); html = html.replace(/\s*face=[^ >]*/gi, ''); html = html.replace(/\s*FONT-FAMILY:[^;"]*;?/gi, ''); html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3"); html = html.replace(/<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3"); html = html.replace(/\s*style="\s*"/gi, ''); html = html.replace(/<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' '); html = html.replace(/<SPAN\s*[^>]*><\/SPAN>/gi, ''); html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3"); html = html.replace(/<SPAN\s*>(.*?)<\/SPAN>/gi, '$1'); html = html.replace(/<FONT\s*>(.*?)<\/FONT>/gi, '$1'); html = html.replace(/<\\?\?xml[^>]*>/gi, ''); html = html.replace(/<\/?\w+:[^>]*>/gi, ''); html = html.replace(/<\!--.*?-->/g, ''); html = html.replace(/<(U|I|STRIKE)> <\/\1>/g, ' '); html = html.replace(/<H\d>\s*<\/H\d>/gi, ''); html = html.replace(/<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, ''); html = html.replace(/<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3"); html = html.replace(/<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3"); html = html.replace(/<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3"); html = html.replace(/<H(\d)([^>]*)>/gi, '<h$1>'); html = html.replace(/<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>'); html = html.replace(/<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>'); html = html.replace(/<PRE\s*[^>]*>(.*?)<\/PRE>/gi, '<p>$1</p>'); } html = html.replace(/ on([a-z]+)=([\'|\"]?)(.*?)([\'|\"]?)/gi, ''); html = html.replace(/<IFRAME\s*[^>]*>([\s\S]*?)<\/IFRAME>/gi, ''); html = html.replace(/<SCRIPT\s*[^>]*>([\s\S]*?)<\/SCRIPT>/gi, ''); html = html.replace(/<FORM\s*[^>]*>([\s\S]*?)<\/FORM>/gi, ''); html = html.replace(/<STYLE\s*[^>]*>([\s\S]*?)<\/STYLE>/gi, ''); html = html.replace(/<\!--([\s\S]*?)-->/g, ''); html = html.replace(/<LINK\s*[^>]*>/gi, ''); html = html.replace(/<META\s*[^>]*>/gi, ''); if(html.length != leng) try { EditorAPI(EID, 'set', html); } catch(e) {} } var clearTime = setTimeout(function(){var clearInter = setInterval('clear_tag()', 1000);},10000);