📄 onlineeditor.ascx
字号:
str = str.replace(/<style.*?>[\s\S]*?<\/style>/ig, '');
str = str.replace(/<script.*?>[\s\S]*?<\/script>/ig, '');
str = str.replace(/<noscript.*?>[\s\S]*?<\/noscript>/ig, '');
str = str.replace(/<select.*?>[\s\S]*?<\/select>/ig, '');
str = str.replace(/<object.*?>[\s\S]*?<\/object>/ig, '');
str = str.replace(/<!--[\s\S]*?-->/ig, '');
str = str.replace(/on(mousewheel|mouseover|click|load|unload|submit|focus|blur)="[^"]*"/ig, '');
str = str.replace(/(\r\n|\n|\r)/ig, '');
str = str.replace(/<table([^>]*width[^>]*)>/ig, function($1, $2) {return tabletag($2);});
str = str.replace(/<table[^>]*>/ig, '[table]');
str = str.replace(/<tr[^>]*>/ig, '[tr]');
str = str.replace(/<td>/ig, '[td]');
str = str.replace(/<td([^>]+)>/ig, function($1, $2) {return tdtag($2);});
str = str.replace(/<\/td>/ig, '[/td]');
str = str.replace(/<\/tr>/ig, '[/tr]');
str = str.replace(/<\/table>/ig, '[/table]');
str = str.replace(/<h([0-9]+)[^>]*>(.*)<\/h\\1>/ig, "[size=$1]$2[/size]\n\n");
//str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {alert($3);alert(smilies[$3][1]);return smilies[$3]['code'];});
str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {return ParseSmilies($1,$3);});
str = str.replace(/<img([^>]*src[^>]*)>/ig, function($1, $2) {return imgtag($2);});
str = str.replace(/<a\s+?name=(["']?)(.+?)(\1)[\s\S]*?>([\s\S]*?)<\/a>/ig, "$3");
str = str.replace(/<br[^\>]*>/ig, "\n");
str = recursion('b', str, 'simpletag', 'b');
str = recursion('strong', str, 'simpletag', 'b');
str = recursion('i', str, 'simpletag', 'i');
str = recursion('em', str, 'simpletag', 'i');
str = recursion('u', str, 'simpletag', 'u');
str = recursion('a', str, 'atag');
str = recursion('font', str, 'fonttag');
str = recursion('blockquote', str, 'simpletag', 'quote');
str = recursion('ol', str, 'listtag');
str = recursion('ul', str, 'listtag');
str = recursion('div', str, 'divtag');
str = recursion('span', str, 'spantag');
str = recursion('p', str, 'ptag');
str = str.replace(/<[\/\!]*?[^<>]*?>/ig, '');
for(var i = 0; i <= pcodecount; i++) {
str = str.replace("[\tDISCUZ_CODE_" + i + "\t]", codehtml[i]);
}
str = str.replace(/&/ig, '&');
str = str.replace(/ /ig, ' ');
str = str.replace(/</ig, '<');
str = str.replace(/>/ig, '>');
return trim(str)
}
function addslashes(str) {
var searcharray = ['\\', '\'', '/', '(', ')', '[', ']', '{', '}', '^', '$', '?', '.', '*', '+', '|']
var replacearray = ['\\\\', '\\\'', '\\/', '\\(', '\\)', '\\[', '\\]', '\\{', '\\}', '\\^', '\\$', '\\?', '\\.', '\\*', '\\+', '\\|']
var len = searcharray.length
for(var i = 0; i < len; i++) {
str = str.replace(searcharray[i], replacearray[i]);
}
return str;
}
function bbcode2html(str) {
var re;
if(str == '') {
return '';
}
if(!fetchCheckbox('bbcodeoff') && Allowbbcode) {
str= str.replace(/\s*\[code\]([\s\S]+?)\[\/code\]\s*/ig, function($1, $2) {return parsecode($2);});
}
/*
if (smilies.length && !findobj("smileyoff").checked && Allowsmilies){
for (i=0;i<smilies.length;i++){
s=addslashes(smilies[i][1])
re = new RegExp(s, "g");
s="[IMG src=\"editor/images/smilies/" + smilies[i][2] + "\" border=0 smilieid=\"" + smilies[i][0] + "\"]";
str=str.replace(re,s);
}
}
*/
//if (!Allowhtml){
str = str.replace(/</ig, '<')
str = str.replace(/>/ig, '>')
//}
re=/\[img\ssrc=\"(.*?)\"\sborder=0\ssmilieid=\"(.*?)\"\]/ig;
str=str.replace(re,"<img smilieid=\"$2\" src=\"$1\" border=\"0\">");
if(!fetchCheckbox('parseurloff')) {
str = str.replace(/^((http|https|ftp|rtsp|mms):\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig, "<a target=_blank href=$1>$1</a>")
str = str.replace(/((http|https|ftp|rtsp|mms):\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig, "<a target=_blank href=$1>$1</a>")
str = str.replace(/[^>=\]""]((http|https|ftp|rtsp|mms):\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig, "<a target=_blank href=$1>$1</a>")
}
if(!fetchCheckbox('bbcodeoff') && Allowbbcode) {
str= str.replace(/(\[url\])(.*?)(\[\/url\])/ig, '<a href="$2" target="_blank">$2</a>')
str= str.replace(/(\[url=(.[^\[]*)\])(.*?)(\[\/url\])/ig, '<a href="$2" target="_blank">$3</a>')
str= str.replace(/(\[email\])(.*?)(\[\/email\])/ig, '<a href="mailto:$2">$2</a>')
str= str.replace(/(\[email=(.[^\[]*)\])(.*?)(\[\/email\])/ig, '<a href="mailto:$2" target="_blank">$3</a>')
str = str.replace(/\[color=([^\[\<]+?)\]/ig, '<font color="$1">')
str = str.replace(/\[size=([^\[\<]+?)\]/ig, '<font size="$1">')
str = str.replace(/\[font=([^\[\<]+?)\]/ig, '<font face="$1">')
str = str.replace(/\[align=([^\[\<]+?)\]/ig, '<p align="$1">')
re = /\s*\[table(=(\d{1,3}%?))?\][\n\r]*([\s\S]+?)[\n\r]*\[\/table\]\s*/ig
str = str.replace(re, function($1, $2, $3, $4) {return parsetable($3, $4);})
str = str.replace(re, function($1, $2, $3, $4) {return parsetable($3, $4);})
var searcharray = new Array(
'\\\[\\\/color\\\]', '\\\[\\\/size\\\]', '\\\[\\\/font\\\]', '\\\[\\\/align\\\]', '\\\[b\\\]', '\\\[\\\/b\\\]',
'\\\[i\\\]', '\\\[\\\/i\\\]', '\\\[u\\\]', '\\\[\\\/u\\\]', '\\\[list\\\]', '\\\[list=1\\\]', '\\\[list=a\\\]',
'\\\[list=A\\\]', '\\\[\\\*\\\]', '\\\[\\\/list\\\]', '\\\[indent\\\]', '\\\[\\\/indent\\\]'
);
var replacearray = new Array(
'</font>', '</font>', '</font>', '</p>', '<b>', '</b>', '<i>',
'</i>', '<u>', '</u>', '<ul>', '<ol type=1>', '<ol type=a>',
'<ol type=A>', '<li>', '</ul></ol>', '<blockquote>', '</blockquote>'
);
var len = searcharray.length;
for(var i = 0; i < len; i++) {
re = new RegExp(searcharray[i], "ig");
str = str.replace(re, replacearray[i]);
}
}
/*
if(!fetchCheckbox('bbcodeoff')) {
if (Allowimgcode){
str = str.replace(/\[localimg=(\d{1,3}),(\d{1,3})\](\d+)\[\/localimg\]/ig, function ($1, $2, $3, $4) {if($('attach_' + $4)) {var src = $('attach_' + $4).value; if(src != '') return '<img src="' + src + '" width="' + $2 + '" height="' + $3 + '" aid="attach_' + $4 + '" border="0" alt="" />';}});
str = str.replace(/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ig, '<img src=\"$1\" border=\"0\" onload=\"if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=\'Click here to open new window\\nCTRL+Mouse wheel to zoom in/out\';}\" onmouseover=\"if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=\'hand\'; this.alt=\'Click here to open new window\\nCTRL+Mouse wheel to zoom in/out\';}\" onclick=\"if(!this.resized) {return true;} else {window.open(\'$1\');}\" onmousewheel=\"return imgzoom(this);\" alt=\"\" />');
str = str.replace(/\[img=(\d{1,3})[x|\,](\d{1,3})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ig, '<img width=\"$1\" height=\"$2\" src=\"$3\" border=\"0\" alt=\"\" />');
} else {
str = str.replace(/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ig, '<a href="$1" target="_blank">$1</a>');
str = str.replace(/\[img=(\d{1,3})[x|\,](\d{1,3})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ig, '<a href="$1" target="_blank">$1</a>');
}
}
for(var i = 0; i <= pcodecount; i++) {
str = str.replace("[\tDISCUZ_CODE_" + i + "\t]", codehtml[i]);
}
if (Allowhtml){
str = str.replace(/\t/ig, ' ')
str = str.replace(/ /ig, ' ')
str = str.replace(/ /ig, ' ')
str = str.replace(/\r\n/ig, '<br />')
str = str.replace(/[\r\n]/ig, '<br />')
}
*/
return(str);
}
function parsetable(width, str) {
if(typeof width == 'undefined') {
var width = '';
} else {
width = width.substr(width.length - 1, width.length) == '%' ? (width.substr(0, width.length - 1) <= 98 ? width : '98%') : (width <= 560 ? width : '560');
}
var string = '<table cellspacing="1" cellpadding="4" '
+ (width == '' ? '' : 'width="' + width + '" ')
+ 'align="center" style="background: ' + INNERBORDERCOLOR + ';border: ' + BORDERWIDTH + 'px solid ' + BORDERCOLOR + ';">';
str = str.replace(/\[td=(\d{1,2}),(\d{1,2})(,(\d{1,3}%?))?\]/ig, '<td colspan="$1" rowspan="$2" width="$4" style="background: ' + ALTBG2 + ';font: ' + FONTSIZE + ' ' + FONT + ';">');
str = str.replace(/\[tr\]/ig, '<tr>');
str = str.replace(/\[td\]/ig, '<td style="background: ' + ALTBG2 + ';font: ' + FONTSIZE + ' ' + FONT + ';">');
str = str.replace(/\[\/td\]/ig, '</td>');
str = str.replace(/\[\/tr\]/ig, '</tr>');
string += str;
string += '</table>';
return string;
}
function trim(str) {
return (str.replace(/(\s+)$/g, '')).replace(/^\s+/g, '');
}
function htmlspecialchars(str) {
var f = new Array(
(is_mac && is_ie ? new RegExp('&', 'g') : new RegExp('&(?!#[0-9]+;)', 'g')),
new RegExp('<', 'g'),
new RegExp('>', 'g'),
new RegExp('"', 'g')
);
var r = new Array(
'&',
'<',
'>',
'"'
);
for(var i = 0; i < f.length; i++) {
str = str.replace(f[i], r[i]);
}
return str;
}
function strpos(haystack, needle, offset) {
if(typeof offset == 'undefined') {
offset = 0;
}
index = haystack.toLowerCase().indexOf(needle.toLowerCase(), offset);
return index == -1 ? false : index;
}
function in_array(needle, haystack) {
if(typeof needle == 'string') {
for(var i in haystack) {
if(haystack[i] == needle) {
return true;
}
}
}
return false;
}
</script
>
<script type="text/javascript">
var menuslidetimer = null;
function Popup_Handler() {
this.open_steps = 2;
this.open_fade = false;
this.active = false;
this.menus = new Array();
this.activemenu = null;
this.hidden_selects = new Array();
this.activate = function(active) {
this.active = active;
}
this.register = function(clickactive, controlkey, noimage) {
this.menus[controlkey] = new Popup_Menu(clickactive, controlkey, noimage);
return this.menus[controlkey];
}
this.hide = function() {
if(this.activemenu != null) this.menus[this.activemenu].hide();
}
}
function Popup_Events() {
this.controlobj_show = function(e) {
doane(e);
clearTimeout(this.slidetimer);
if(popupmenu.activemenu == null || popupmenu.menus[popupmenu.activemenu].controlkey != this.id) {popupmenu.menus[this.id].show(this, false, popupmenu.menus[this.id].clickactive);}
}
this.controlobj_onclick = function(e) {
doane(e);
if(popupmenu.activemenu == null || popupmenu.menus[popupmenu.activemenu].controlkey != this.id) {popupmenu.menus[this.id].show(this, false, popupmenu.menus[this.id].clickactive);}
else {popupmenu.menus[this.id].hide();}
}
this.controlobj_onmouseover = function(e) {
doane(e);
popupmenu.menus[this.id].hover(this);
}
this.menuoption_onclick_function = function(e) {
this.ofunc(e);
popupmenu.menus[this.controlkey].hide();
}
this.menuoption_onclick_link = function(e) {
popupmenu.menus[this.controlkey].choose(e, this);
}
this.menuoption_onmouseover = function(e) {
this.className = 'popupmenu_highlight';
}
this.menuoption_onmouseout = function(e) {
this.className = 'popupmenu_option';
}
}
popupmenu = new Popup_Handler();
popupevents = new Popup_Events();
function popupmenu_hide(e) {
if(e && e.button && e.button != 1 && e.type == 'click') return true;
else popupmenu.hide();
}
function Popup_Menu(clickactive, controlkey, noimage) {
this.controlkey = controlkey;
this.clickactive = clickactive;
this.menuname = this.controlkey.split('.')[0] + '_menu';
if($(this.menuname)) {this.init_menu(clickactive);}
this.slide_open = (is_opera ? false : true);
this.open_steps = popupmenu.open_steps;
this.init_control = function(noimage) {
this.controlobj = $(this.controlkey);
this.controlobj.state = false;
if(this.controlobj.firstChild && (this.controlobj.firstChild.tagName == 'TEXTAREA' || this.controlobj.firstChild.tagName == 'INPUT')) {
} else {
if(!this.clickactive && !noimage && !(is_mac && is_ie)) {
var img = document.createElement('img');
img.src = 'images/common/jsmenu.gif';
img.border = 0;
img.title = '';
img.alt = '';
this.controlobj.appendChild(img);
}
this.controlobj.unselectable = true;
if(!noimage) {
this.controlobj.style.cursor = is_ie ? 'hand' : 'pointer';
}
if(clickactive) {
this.controlobj.onclick = popupevents.controlobj_onclick;
this.controlobj.onmouseover = popupevents.controlobj_onmouseover;
} else {
this.controlobj.onmouseover = popupevents.controlobj_show;
}
}
}
this.init_control( noimage);
this.init_menu = function() {
this.menuobj = $(this.menuname);
if(this.menuobj && !this.menuobj.initialized) {
this.menuobj.initialized = true;
this.menuobj.onclick = ebygum;
this.menuobj.style.position = 'absolute';
if(!this.clickactive) {
this.menuobj.onmouseover = function() {
clearTimeout(menuslidetimer);
}
this.menuobj.onmouseout = function() {
menuslidetimer = setTimeout("menuhide()",500);
}
}
this.menuobj.style.zIndex = 50;
if(is_ie && !is_mac) {
this.menuobj.style.filter += "progid:DXImageTransform.Microsoft.shadow(direction=135,color=#CCCCCC,strength=2)";
}
this.init_menu_contents();
}
}
this.init_menu_contents = function() {
var tds = findtags(this.menuobj, 'td');
for(var i = 0; i < tds.length; i++) {
if(tds[i].className == 'popupmenu_option' || tds[i].className == 'editor_colornormal') {
if(is_ie && !is_mac) {
tds[i].style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity=85,finishOpacity=100,style=0)";
}
tds[i].style.opacity = 0.85;
if(tds[i].title && tds[i].title == 'nohighlight') {
tds[i].title = '';
} else {
tds[i].controlkey = this.controlkey;
if(tds[i].className != 'editor_colornormal') {
tds[i].onmouseover = popupevents.menuoption_onmouseover;
tds[i].onmouseout = popupevents.menuoption_onmouseout;
}
if(typeof tds[i].onclick == 'function') {
tds[i].ofunc = tds[i].onclick;
tds[i].onclick = popupevents.menuoption_onclick_function;
} else {
tds[i].onclick = popupevents.menuoption_onclick_link;
}
if(!is_saf && !is_kon) {
try {
links = findtags(tds[i], 'a');
for(var j = 0; j < links.length; j++) {
if(typeof links[j].onclick == 'undefined') links[j].onclick = ebygum;
}
}
catch(e) {}
}
}
}
}
}
this.show = function(obj, instant) {
if(!popupmenu.active){return false;}
else if(!this.menuobj) {this.init_menu();}
if(!this.menuobj) {return false;}
if(popupmenu.activemenu != null) {popupmenu.menus[popupmenu.activemenu].hide();}
popupmenu.activemenu = this.controlkey;
this.menuobj.style.display = '';
if(popupmenu.slide_open) {this.menuobj.style.clip = 'rect(auto, auto, auto, auto)';}
this.pos = this.fetch_offset(obj);
this.leftpx = this.pos['left'];
this.toppx = this.pos['top'] + obj.offsetHeight;
if((this.leftpx + this.menuobj.offsetWidth) >= document.body.clientWidth && (this.leftpx + obj.offsetWidth - this.menuobj.offsetWidth) > 0) {
this.leftpx = this.leftpx + obj.offsetWidth - this.menuobj.offsetWidth;
this.direction = 'right';
} else {this.direction = 'left';}
this.menuobj.style.left = this.leftpx + 'px';
this.menuobj.style.top = this.toppx + 'px';
if(!instant && this.slide_open) {
this.intervalX = Math.ceil(this.menuobj.offsetWidth / this.open_steps);
this.intervalY = Math.ceil(this.menuobj.offsetHeight / this.open_steps);
this.slide((this.direction == 'left' ? 0 : this.menuobj.offsetWidth), 0, 0);
} else if(this.menuobj.style.clip && popupmenu.slide_open) {
this.menuobj.style.clip = 'rect(auto, auto, auto, auto)';
}
this.handle_overlaps(true);
if(this.menuobj.scrollHeight > 400) {
this.menuobj.style.height = '400px';
if(is_ie || is_opera) {
this.menuobj.style.width = this.menuobj.scrollWidth + 18;
}
if(is_opera) {
this.menuobj.style.overflow = 'scroll';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -