post.js

来自「AR9001.rar ZUOM AR9001.rar」· JavaScript 代码 · 共 315 行

JS
315
字号
/*	[Discuz!] (C)2001-2007 Comsenz Inc.	This is NOT a freeware, use is subject to license terms	$RCSfile: post.js,v $	$Revision: 1.27 $	$Date: 2007/08/06 08:27:23 $*/var postSubmited = false;var smdiv = new Array();var codecount = '-1';var codehtml = new Array();function AddText(txt) {	obj = $('postform').content;	selection = document.selection;	checkFocus();	if(!isUndefined(obj.selectionStart)) {		var opn = obj.selectionStart + 0;		obj.value = obj.value.substr(0, obj.selectionStart) + txt + obj.value.substr(obj.selectionEnd);	} else if(selection && selection.createRange) {		var sel = selection.createRange();		sel.text = txt;		sel.moveStart('character', -strlen(txt));	} else {		obj.value += txt;	}}function checkFocus() {	var obj = typeof wysiwyg == 'undefined' || !wysiwyg ? $('postform').content : editwin;	if(!obj.hasfocus) {		obj.focus();	}}function ctlent(event) {	if(postSubmited == false && (event.ctrlKey && event.keyCode == 13) || (event.altKey && event.keyCode == 83) && $('postsubmit')) {		if(in_array($('postsubmit').name, ['topicsubmit', 'replysubmit', 'editsubmit', 'pmsubmit']) && !validate($('postform'))) {			doane(event);			return;		}		postSubmited = true;		$('postsubmit').disabled = true;		$('postform').submit();	}}function deleteData() {	if(is_ie) {		saveData('', 'delete');	} else if(window.sessionStorage) {		try {			sessionStorage.removeItem('Discuz!');		} catch(e) {}	}}function insertSmiley(smilieid) {	checkFocus();	var src = $('smilie_' + smilieid).src;	var code = $('smilie_' + smilieid).code;	if(typeof wysiwyg != 'undefined' && wysiwyg && allowsmilies && (!$('smileyoff') || $('smileyoff').checked == false)) {		if(is_moz) {			applyFormat('InsertImage', false, src);			var smilies = editdoc.body.getElementsByTagName('img');			for(var i = 0; i < smilies.length; i++) {				if(smilies[i].src == src && smilies[i].getAttribute('smilieid') < 1) {					smilies[i].setAttribute('smilieid', smilieid);					smilies[i].setAttribute('border', "0");				}			}		} else {			insertText('<img src="' + src + '" border="0" smilieid="' + smilieid + '" alt="" /> ', false);		}	} else {		code += ' ';		AddText(code);	}}function parseurl(str, mode) {	str= str.replace(/\s*\[code\]([\s\S]+?)\[\/code\]\s*/ig, function($1, $2) {return codetag($2);});	str = str.replace(/([^>=\]"'\/]|^)((((https?|ftp):\/\/)|www\.)([\w\-]+\.)*[\w\-\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&~`@':+!]*)+\.(jpg|gif|png|bmp))/ig, mode == 'html' ? '$1<img src="$2" border="0">' : '$1[img]$2[/img]');	str = str.replace(/([^>=\]"'\/@]|^)((((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast):\/\/))([\w\-]+\.)*[:\.@\-\w\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&~`@':+!#]*)*)/ig, mode == 'html' ? '$1<a href="$2" target="_blank">$2</a>' : '$1[url]$2[/url]');	str = str.replace(/([^\w>=\]"'\/@]|^)((www\.)([\w\-]+\.)*[:\.@\-\w\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&~`@':+!#]*)*)/ig, mode == 'html' ? '$1<a href="$2" target="_blank">$2</a>' : '$1[url]$2[/url]');	str = str.replace(/([^\w->=\]:"'\.\/]|^)(([\-\.\w]+@[\.\-\w]+(\.\w+)+))/ig, mode == 'html' ? '$1<a href="mailto:$2">$2</a>' : '$1[email]$2[/email]');	for(var i = 0; i <= codecount; i++) {		str = str.replace("[\tDISCUZ_CODE_" + i + "\t]", codehtml[i]);	}	return str;}function codetag(text) {	codecount++;	text = text.replace(/<br[^\>]*>/ig, '\n');	text = text.replace(/^[\n\r]*([\s\S]+?)[\n\r]*$/ig, '$1');	if(typeof wysiwyg != 'undefined' && wysiwyg) text = text.replace(/<(\/|)[A-Za-z].*?>/ig, '');	codehtml[codecount] = '[code]' + text + '[/code]';	return '[\tDISCUZ_CODE_' + codecount + '\t]';}function loadData() {	var content = '';	if(is_ie) {		try {			textobj.load('Discuz!');			var oXMLDoc = textobj.XMLDocument;			var nodes = oXMLDoc.documentElement.childNodes;			content = nodes.item(nodes.length - 1).getAttribute('content');		} catch(e) {}	} else if(window.sessionStorage) {		try {			content = sessionStorage.getItem('Discuz!');		} catch(e) {}	}	content = content.toString();	if(in_array((content = trim(content)), ['', 'null', 'false', null, false])) {		alert(lang['post_autosave_none']);		return;	}	if(!confirm(lang['post_autosave_confirm'])) {		return;	}	var formdata = content.split(/\x09\x09/);	for(var i = 0; i < $('postform').elements.length; i++) {		var el = $('postform').elements[i];		if(el.name != '' && (el.tagName == 'TEXTAREA' || el.tagName == 'INPUT' && (el.type == 'text' || el.type == 'checkbox' || el.type == 'radio'))) {			for(var j = 0; j < formdata.length; j++) {				var ele = formdata[j].split(/\x09/);				if(ele[0] == el.name) {					elvalue = !isUndefined(ele[3]) ? ele[3] : '';					if(ele[1] == 'INPUT') {						if(ele[2] == 'text') {							el.value = elvalue;						} else if((ele[2] == 'checkbox' || ele[2] == 'radio') && ele[3] == el.value) {							el.checked = true;							evalevent(el);						}					} else if(ele[1] == 'TEXTAREA') {						if(ele[0] == 'content') {							if(typeof wysiwyg == 'undefined' || !wysiwyg) {								textobj.value = elvalue;							} else {								editdoc.body.innerHTML = bbcode2html(elvalue);							}						} else {							el.value = elvalue;						}					}					break				}			}		}	}}function evalevent(obj) {	var script = obj.parentNode.innerHTML;	var re = /onclick="(.+?)["|>]/ig;	var matches = re.exec(script);	if(matches != null) {		matches[1] = matches[1].replace(/this\./ig, 'obj.');		eval(matches[1]);	}}function saveData(data, del) {	if(!data && isUndefined(del)) {		return;	}	if(typeof wysiwyg != 'undefined' && typeof editorid != 'undefined' && typeof bbinsert != 'undefined' && bbinsert && $(editorid + '_mode') && $(editorid + '_mode').value == 1) {		data = html2bbcode(data);	}	var formdata = '';	if(isUndefined(del)) {		for(var i = 0; i < $('postform').elements.length; i++) {			var el = $('postform').elements[i];			if(el.name != '' && (el.tagName == 'TEXTAREA' || el.tagName == 'INPUT' && (el.type == 'text' || el.type == 'checkbox' || el.type == 'radio')) && el.name.substr(0, 6) != 'attach') {				var elvalue = el.name == 'content' ? data : el.value;				if((el.type == 'checkbox' || el.type == 'radio') && !el.checked) {					continue;				}				formdata += el.name + String.fromCharCode(9) + el.tagName + String.fromCharCode(9) + el.type + String.fromCharCode(9) + elvalue + String.fromCharCode(9, 9);			}		}	}	if(is_ie) {		try {			var oXMLDoc = textobj.XMLDocument;			var root = oXMLDoc.firstChild;			if(root.childNodes.length > 0) {				root.removeChild(root.firstChild);			}			var node = oXMLDoc.createNode(1, 'POST', '');			var oTimeNow = new Date();			oTimeNow.setHours(oTimeNow.getHours() + 24);			textobj.expires = oTimeNow.toUTCString();			node.setAttribute('content', formdata);			oXMLDoc.documentElement.appendChild(node);			textobj.save('Discuz!');		} catch(e) {}	} else if(window.sessionStorage) {		try {			sessionStorage.setItem('Discuz!', formdata);		} catch(e) {}	}}function setCaretAtEnd() {	var obj = typeof wysiwyg == 'undefined' || !wysiwyg ? $('postform').content : editwin;	if(typeof wysiwyg != 'undefined' && wysiwyg) {		if(is_moz || is_opera) {		} else {			var sel = editdoc.selection.createRange();			sel.moveStart('character', strlen(getEditorContents()));			sel.select();		}	} else {		if(obj.createTextRange)  {			var sel = obj.createTextRange();			sel.moveStart('character', strlen(obj.value));			sel.collapse();			sel.select();		}	}}function smileyMenu(ctrl) {	var smiley = ctrl.firstChild;	ctrl.style.cursor = 'pointer';	if(smiley.alt) {		smiley.code = smiley.alt;		smiley.alt = '';	}	if(smiley.title) {		smiley.lw = smiley.title;		smiley.title = '';	}	smdiv[ctrl.id] = document.createElement('div');	smdiv[ctrl.id].id = smiley.id + '_menu';	smdiv[ctrl.id].style.display = 'none';	smdiv[ctrl.id].style.width = '60px';	smdiv[ctrl.id].style.height = '60px';	smdiv[ctrl.id].className = 'popupmenu_popup';	$('smilieslist').appendChild(smdiv[ctrl.id]);	smdiv[ctrl.id].innerHTML = '<table width="100%" height="100%"><tr><td align="center" valign="middle"><img src="' + smiley.src + '" border="0" width="' + smiley.lw + '" /></td></tr></table>';	showMenu(ctrl.id, 0, 0, 1, 0, 0, smiley.id);}function storeCaret(textEl){	if(textEl.createTextRange){		textEl.caretPos = document.selection.createRange().duplicate();	}}if(is_ie >= 5 || is_moz >= 2) {	window.onbeforeunload = function () {		try {			saveData(wysiwyg && bbinsert ? editdoc.body.innerHTML : textobj.value);		} catch(e) {}	};}function setmediacode(editorid) {	insertText('[media='+$(editorid + '_mediatype').value+		','+$(editorid + '_mediawidth').value+		','+$(editorid + '_mediaheight').value+		','+$(editorid + '_mediaautostart').value+']'+		$(editorid + '_mediaurl').value+'[/media]');	hideMenu();}function setmediatype(editorid) {	var ext = $(editorid + '_mediaurl').value.lastIndexOf('.') == -1 ? '' : $(editorid + '_mediaurl').value.substr($(editorid + '_mediaurl').value.lastIndexOf('.') + 1, $(editorid + '_mediaurl').value.length).toLowerCase();	if(ext == 'rmvb') {		ext = 'rm';	}	if($(editorid + '_mediatyperadio_' + ext)) {		$(editorid + '_mediatyperadio_' + ext).checked = true;		$(editorid + '_mediatype').value = ext;	}}var divdragstart = new Array();function divdrag(e, op, obj) {	if(op == 1) {		if(is_ie) {			document.body.onselectstart = function() {				return false;			}		}		divdragstart = is_ie ? [event.clientX, event.clientY] : [e.clientX, e.clientY];		divdragstart[2] = parseInt(obj.style.left);		divdragstart[3] = parseInt(obj.style.top);		doane(e);	} else if(op == 2 && divdragstart[0]) {		var divdragnow = is_ie ? [event.clientX, event.clientY] : [e.clientX, e.clientY];		obj.style.left = (divdragstart[2] + divdragnow[0] - divdragstart[0]) + 'px';		obj.style.top = (divdragstart[3] + divdragnow[1] - divdragstart[1]) + 'px';		doane(e);	} else if(op == 3) {		if(is_ie) {			document.body.onselectstart = function() {				return true;			}		}		divdragstart = [];		doane(e);	}}

⌨️ 快捷键说明

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