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

📄 yqweditor.js

📁 JSP购物车(SQLserver版) ================== 简单的JSP电子商务网站购物车 带结算功能,带注册系统 大二时自己编写的,供大家参考学习 功能不是很详尽,美工
💻 JS
📖 第 1 页 / 共 5 页
字号:
/**
* Workaround for heinous IE bug - add special YQWlength property to all strings
* This method is applied to ALL string objects automatically
*
* @return	integer
*/
String.prototype.YQWlength = function()
{
	return (is_ie && this.indexOf('\n') != -1) ? this.replace(/\r?\n/g, '_').length : this.length;
}

/**
* PHP Function Emulator Class
*/
function JavaEmulator()
{
}

JavaEmulator.prototype.strPad = function(text, length, padstring)
{
	text = new String(text);
	padstring = new String(padstring);
	if (text.length < length){
		padtext = new String(padstring);
		while (padtext.length < (length - text.length)){
			padtext += padstring;
		}
		text = padtext.substr(0, (length - text.length)) + text;
	}
	return text;
}

/**
* Trims leading whitespace
* @param	string	String to trim
* @return	string
*/
JavaEmulator.prototype.ltrim = function(str){
	return str.replace(/^\s+/g, '');
}

/**
* Trims trailing whitespace
* @param	string	String to trim
* @return	string
*/
JavaEmulator.prototype.rtrim = function(str){
	return str.replace(/(\s+)$/g, '');
}

/**
* Trims leading and trailing whitespace
* @param	string	String to trim
* @return	string
*/
JavaEmulator.prototype.trim = function(str){
	return this.ltrim(this.rtrim(str));
}

JavaEmulator.prototype.stripos = function(haystack, needle, offset){
	if (typeof offset == 'undefined'){offset = 0;}
	index = haystack.toLowerCase().indexOf(needle.toLowerCase(), offset);
	return (index == -1 ? false : index);
}

JavaEmulator.prototype.htmlspecialchars = function(str){
	//var f = new Array(/&(?!#[0-9]+;)/g, /</g, />/g, /"/g);
	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(
		'&amp;',
		'&lt;',
		'&gt;',
		'&quot;');

	for (var i = 0; i < f.length; i++){
		str = str.replace(f[i], r[i]);
	}
	return str;
}


JavaEmulator.prototype.ucfirst = function(str, cutoff){	
	if (typeof cutoff != 'undefined'){
		var cutpos = str.indexOf(cutoff);
		if (cutpos > 0){
			str = str.substr(0, cutpos);
		}
	}
	str = str.split(' ');
	for (var i = 0; i < str.length; i++){
		str[i] = str[i].substr(0, 1).toUpperCase() + str[i].substr(1);
	}
	return str.join(' ');
}
var JAVA = new JavaEmulator();
/**
* Strips quotes and bbcode tags from text
*
* @param	string	Text to manipulate
* @param	boolean	If true, strip <x> otherwise strip [x]
* @param	boolean	If true, strip all [quote]...contents...[/quote]
*
* @return	string
*/
function stripcode(str, ishtml, stripquotes){
	if (!is_regexp){
		return str;
	}

	if (stripquotes){
		var start_time = new Date().getTime();

		while ((startindex = JAVA.stripos(str, '[quote')) !== false){
			if (new Date().getTime() - start_time > 2000){
				// while loop has been running for over 2 seconds and has probably gone infinite
				break;
			}
			if ((stopindex = JAVA.stripos(str, '[/quote]')) !== false){
				fragment = str.substr(startindex, stopindex - startindex + 8);
				str = str.replace(fragment, '');
			}else{
				break;
			}
			str = JAVA.trim(str);
		}
	}

	if (ishtml){
		// exempt image tags -- they need to count as characters in the string
		// as the do as BB codes
		str = str.replace(/<img[^>]+src="([^"]+)"[^>]*>/gi, '$1');

		var html1 = new RegExp("<(\\w+)[^>]*>", 'gi');
		var html2 = new RegExp("<\\/\\w+>", 'gi');

		str = str.replace(html1, '');
		str = str.replace(html2, '');

		var html3 = new RegExp('(&nbsp;)', 'gi');
		str = str.replace(html3, ' ');
	}else{
		var bbcode1 = new RegExp("\\[(\\w+)[^\\]]*\\]", 'gi');
		var bbcode2 = new RegExp("\\[\\/(\\w+)\\]", 'gi');

		str = str.replace(bbcode1, '');
		str = str.replace(bbcode2, '');
	}
	return str;
}


/**
* Class to handle pagenav events
*/
function YQWpagenav(){
}

/**
* Handles clicks on pagenav menu control objects
*/
YQWpagenav.prototype.controlobj_onclick = function(e){
	this._onclick(e);
	var inputs = getTags(this.menu.menuobj, 'input');
	for (var i = 0; i < inputs.length; i++){
		if (inputs[i].type == 'text'){
			inputs[i].focus();
			break;
		}
	}
};

/**
* Submits the pagenav form... sort of
*/
YQWpagenav.prototype.form_gotopage = function(e){
	if ((pagenum = parseInt(c.o('pagenav_itxt').value, 10)) > 0){
		window.location = this.addr + '&page=' + pagenum;
	}
	return false;
};

/**
* Handles clicks on the 'Go' button in pagenav popups
*/
YQWpagenav.prototype.ibtn_onclick = function(e){
	return this.form.gotopage();
};

/**
* Handles keypresses in the text input of pagenav popups
*/
YQWpagenav.prototype.itxt_onkeypress = function(e){
	return ((e ? e : window.event).keyCode == 13 ? this.form.gotopage() : true);
};


function YeQiangWei_init(){
	// don't bother doing any exciting stuff for WebTV
	if (is_webtv){
		return false;
	}
	// finalize popup menus
	if (typeof YQWmenu == 'object'){
		// close all menus on document click
		if (window.attachEvent && !is_saf){
			document.attachEvent('onclick', YQWmenu_hide);
			window.attachEvent('onresize', YQWmenu_hide);
		}else if (document.addEventListener && !is_saf){
			document.addEventListener('click', YQWmenu_hide, false);
			window.addEventListener('resize', YQWmenu_hide, false);
		}else{
			window.onclick = YQWmenu_hide;
			window.onresize = YQWmenu_hide;
		}
		YQWmenu.activate(true);
	}
	return true;
}

/**
* Handles the different event models of different browsers and prevents event bubbling in a lesser way than do_an_e()
*
* @param	event	Event object
*
* @return	event
*/
function e_by_gum(eventobj)
{
	if (!eventobj || is_ie)
	{
		window.event.cancelBubble = true;
		return window.event;
	}
	else
	{
		if (eventobj.target.type == 'submit')
		{
			// naughty safari
			eventobj.target.form.submit();
		}
		eventobj.stopPropagation();
		return eventobj;
	}
}
/**
* Pop function for browsers that don't have it built in
*
* @param	array	Array from which to pop
*
* @return	mixed	null on empty, value on success
*/
function array_pop(a)
{
	if (typeof a != 'object' || !a.length)
	{
		return null;
	}
	else
	{
		var response = a[a.length - 1];
		a.length--;
		return response;
	}
}


/* HTML TO UBB */
function HTMLTOUBB(str) {
	str = str.replace(/\r/g,"");
	str = str.replace(/on(load|click|dbclick|mouseover|mousedown|mouseup)="[^"]+"/ig,"");
	str = str.replace(/<script[^>]*?>([\w\W]*?)<\/script>/ig,"");

	//屏闭干扰码
	str = str.replace(/<span[^>]*?display\s*?:\s*?none[^>]*?>([\w\W]*?)<\/span>/ig,"");
	str = str.replace(/<span[^>]*?font\s*?-\s*?size\s*?:\s*(0px|0pt)[^>]*?>([\w\W]*?)<\/span>/ig,"");
	str = str.replace(/<font([^>]+)(0px|0pt)+([^>]*)>([\w\W]*?)<\/font>/ig,"");

	str=str.replace(/^[ ]*(http:\/\/|^mms:\/\/|^rtsp:\/\/|^pnm:\/\/|^ftp:\/\/|^mmst:\/\/|^mmsu:\/\/)([^\r\n]*)$/igm,"[url]$1$2[/url]");
	//图片
	str = str.replace(/<a[^>]+href=[" ]?([^"]+)[" ]?[^>]*>(.*?)<\/a>/ig,"[url=$1]$2[/url]");
	str = str.replace(/<font([^>]+)color=([^ >]+)([^>]*)>(.*?)<\/font>/ig,"[color=$2]$4[/color]");
	str = str.replace(/<font([^>]+)class=([^ >]+)([^>]*)>(.*?)<\/font>/ig,"[color=$2]$4[/color]");
	str = str.replace(/<font([^>]+)size=([^ >]+)([^>]*)>(.*?)<\/font>/ig,"[size=$2]$4[/size]");
	str = str.replace(/<font[^>]+face=([^ >]+)[^>]*>(.*?)<\/font>/ig,"[font=$1]$2[/font]");

	str = str.replace(/<img[^>]+src=[" ]?([^"]+)[" ]?[^>]*>/ig,"[img]$1[/img]");
	str = str.replace(/<object[^>]+classid=[" ]?clsid:D27CDB6E-AE6D-11cf-96B8-444553540000[" ]?[^>]*>(.*?)<param[^>]+name=[" ]?movie[" ]?[^>]+value=[" ]?([^"]+)[" ]?[^>]*>/ig,"[flash]$2[/flash]");
	str = str.replace(/<object[^>]+classid=[" ]?clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA[" ]?[^>]*>.*<param[^>]+name="src"[^>]+value="([^"]+)">/ig,"[real]$1[/real]");
	str = str.replace(/<([\/]?)b>/ig,"[$1b]");
	str = str.replace(/<([\/]?)strong>/ig,"[$1b]");
	str = str.replace(/<([\/]?)u>/ig,"[$1u]");
	str = str.replace(/<([\/]?)i>/ig,"[$1i]");
	
	str = str.replace(/<br>/ig,"\n");
	str = str.replace(/<br\/>/ig,"\n");
	str = str.replace(/<br \/>/ig,"\n");
	str = str.replace(/<p[^>]*?>/ig,"\r\n");
	str = str.replace(/<\/p[^>]*?>/ig,"\r\n");
	str = str.replace(/<[^>]*?>/g,"");

	str = str.replace(/&nbsp;/g," ");
	str = str.replace(/&amp;/g,"&");
	str = str.replace(/&quot;/g,"\"");
	str = str.replace(/&lt;/g,"<");
	str = str.replace(/&gt;/g,">");

	str = str.replace(/\[url=([^\]]+)\]\n(\[img\]\1\[\/img\])\n\[\/url\]/g,"$2");
	str = str.replace(/\n+/g,"\n");
	str = str.replace(/\[(.*?)="(.*?)"\]/ig,"[$1=$2]");

	//清除多余空行
	str = str.replace(/([\s]*\r\n[\s]*){2,}/gm,"\r\n");

	return str;
}

/* this menu code from vBulletin 3.6.0 */
function YQW_Popup_Handler()
{
	/**
	* Options:
	*
	* @var	integer	Number of steps to use in sliding menus open
	* @var	boolean	Use opacity face in menu open?
	*/
	this.open_steps = 10;
	this.open_fade = false;

	this.active = false;

	this.menus = new Array();
	this.activemenu = null;

	this.hidden_selects = new Array();
};

// =============================================================================
// YQW_Popup_Handler methods

/**
* Activate / Deactivate the menu system
*
* @param	boolean	Active state for menus
*/
YQW_Popup_Handler.prototype.activate = function(active)
{
	this.active = active;
};

/**
* Register a control object as a menu control
*
* @param	string	ID of the control object
* @param	boolean	Do not add an image (true)
*
* @return	YQW_Popup_Menu
*/
YQW_Popup_Handler.prototype.register = function(controlkey, noimage)
{
	this.menus[controlkey] = new YQW_Popup_Menu(controlkey, noimage);
	return this.menus[controlkey];
};

/**
* Hide active menu
*/
YQW_Popup_Handler.prototype.hide = function()
{
	if (this.activemenu != null)
	{
		this.menus[this.activemenu].hide();
	}
};


// #############################################################################
// initialize menu registry

var YQWmenu = new YQW_Popup_Handler();

/**
* Function to allow anything to hide all menus
*
* @param	event	Event object
*
* @return	mixed
*/
function YQWmenu_hide(e)
{
	if (e && e.button && e.button != 1 && e.type == 'click')
	{
		return true;
	}
	else
	{
		YQWmenu.hide();
	}
};

// #############################################################################
// YQW_Popup_Menu
// #############################################################################

/**
* YQWulletin popup menu class constructor
*
* Manages a single menu and control object
* Initializes control object
*
* @param	string	ID of the control object
*/
function YQW_Popup_Menu(controlkey, noimage)
{
	this.controlkey = controlkey;
	
	this.menuname = this.controlkey.split('.')[0] + '_menu';

	this.init_control(noimage);
	
	if (c.o(this.menuname))
	{
		this.init_menu();
	}

	this.slide_open = (is_opera ? false : true);
	this.open_steps = YQWmenu.open_steps;
};

// =============================================================================
// YQW_Popup_Menu methods

/**
* Initialize the control object
*/
YQW_Popup_Menu.prototype.init_control = function(noimage)
{
	
	this.controlobj = c.o(this.controlkey);
	
	this.controlobj.state = false;

	if (this.controlobj.firstChild && (this.controlobj.firstChild.tagName == 'TEXTAREA' || this.controlobj.firstChild.tagName == 'INPUT')){
		
	}else{
		if (!noimage && !(is_mac && is_ie)){
			var space = document.createTextNode(' ');
			this.controlobj.appendChild(space);

			var img = document.createElement('img');
			img.src = '/club/YQWeditor/imgs/menupop.gif';
			img.border = 0;
			img.title = '';
			img.alt = '';
			this.controlobj.appendChild(img);
		}
		this.controlobj.unselectable = true;
		if (!noimage){this.controlobj.style.cursor = pointer_cursor;}
		this.controlobj.onclick = YQW_Popup_Events.prototype.controlobj_onclick;

⌨️ 快捷键说明

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