亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fckdomtools.js

?? 這是一個BBS系統
?? JS
?? 第 1 頁 / 共 3 頁
字號:
?/*
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2008 Frederico Caldeira Knabben
 *
 * == BEGIN LICENSE ==
 *
 * Licensed under the terms of any of the following licenses at your
 * choice:
 *
 *  - GNU General Public License Version 2 or later (the "GPL")
 *    http://www.gnu.org/licenses/gpl.html
 *
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 *    http://www.gnu.org/licenses/lgpl.html
 *
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
 *    http://www.mozilla.org/MPL/MPL-1.1.html
 *
 * == END LICENSE ==
 *
 * Utility functions to work with the DOM.
 */

var FCKDomTools =
{
	/**
	 * Move all child nodes from one node to another.
	 */
	MoveChildren : function( source, target, toTargetStart )
	{
		if ( source == target )
			return ;

		var eChild ;

		if ( toTargetStart )
		{
			while ( (eChild = source.lastChild) )
				target.insertBefore( source.removeChild( eChild ), target.firstChild ) ;
		}
		else
		{
			while ( (eChild = source.firstChild) )
				target.appendChild( source.removeChild( eChild ) ) ;
		}
	},

	MoveNode : function( source, target, toTargetStart )
	{
		if ( toTargetStart )
			target.insertBefore( FCKDomTools.RemoveNode( source ), target.firstChild ) ;
		else
			target.appendChild( FCKDomTools.RemoveNode( source ) ) ;
	},

	// Remove blank spaces from the beginning and the end of the contents of a node.
	TrimNode : function( node )
	{
		this.LTrimNode( node ) ;
		this.RTrimNode( node ) ;
	},

	LTrimNode : function( node )
	{
		var eChildNode ;

		while ( (eChildNode = node.firstChild) )
		{
			if ( eChildNode.nodeType == 3 )
			{
				var sTrimmed = eChildNode.nodeValue.LTrim() ;
				var iOriginalLength = eChildNode.nodeValue.length ;

				if ( sTrimmed.length == 0 )
				{
					node.removeChild( eChildNode ) ;
					continue ;
				}
				else if ( sTrimmed.length < iOriginalLength )
				{
					eChildNode.splitText( iOriginalLength - sTrimmed.length ) ;
					node.removeChild( node.firstChild ) ;
				}
			}
			break ;
		}
	},

	RTrimNode : function( node )
	{
		var eChildNode ;

		while ( (eChildNode = node.lastChild) )
		{
			if ( eChildNode.nodeType == 3 )
			{
				var sTrimmed = eChildNode.nodeValue.RTrim() ;
				var iOriginalLength = eChildNode.nodeValue.length ;

				if ( sTrimmed.length == 0 )
				{
					// If the trimmed text node is empty, just remove it.

					// Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#81).
					eChildNode.parentNode.removeChild( eChildNode ) ;
					continue ;
				}
				else if ( sTrimmed.length < iOriginalLength )
				{
					// If the trimmed text length is less than the original
					// length, strip all spaces from the end by splitting
					// the text and removing the resulting useless node.

					eChildNode.splitText( sTrimmed.length ) ;
					// Use "node.lastChild.parentNode" instead of "node" to avoid IE bug (#81).
					node.lastChild.parentNode.removeChild( node.lastChild ) ;
				}
			}
			break ;
		}

		if ( !FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsOpera )
		{
			eChildNode = node.lastChild ;

			if ( eChildNode && eChildNode.nodeType == 1 && eChildNode.nodeName.toLowerCase() == 'br' )
			{
				// Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324).
				eChildNode.parentNode.removeChild( eChildNode ) ;
			}
		}
	},

	RemoveNode : function( node, excludeChildren )
	{
		if ( excludeChildren )
		{
			// Move all children before the node.
			var eChild ;
			while ( (eChild = node.firstChild) )
				node.parentNode.insertBefore( node.removeChild( eChild ), node ) ;
		}

		return node.parentNode.removeChild( node ) ;
	},

	GetFirstChild : function( node, childNames )
	{
		// If childNames is a string, transform it in a Array.
		if ( typeof ( childNames ) == 'string' )
			childNames = [ childNames ] ;

		var eChild = node.firstChild ;
		while( eChild )
		{
			if ( eChild.nodeType == 1 && eChild.tagName.Equals.apply( eChild.tagName, childNames ) )
				return eChild ;

			eChild = eChild.nextSibling ;
		}

		return null ;
	},

	GetLastChild : function( node, childNames )
	{
		// If childNames is a string, transform it in a Array.
		if ( typeof ( childNames ) == 'string' )
			childNames = [ childNames ] ;

		var eChild = node.lastChild ;
		while( eChild )
		{
			if ( eChild.nodeType == 1 && ( !childNames || eChild.tagName.Equals( childNames ) ) )
				return eChild ;

			eChild = eChild.previousSibling ;
		}

		return null ;
	},

	/*
	 * Gets the previous element (nodeType=1) in the source order. Returns
	 * "null" If no element is found.
	 *		@param {Object} currentNode The node to start searching from.
	 *		@param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be
	 *				handled. If set to "true", only white spaces text nodes
	 *				will be ignored, while non white space text nodes will stop
	 *				the search, returning null. If "false" or omitted, all
	 *				text nodes are ignored.
	 *		@param {string[]} stopSearchElements An array of element names that
	 *				will cause the search to stop when found, returning null.
	 *				May be omitted (or null).
	 *		@param {string[]} ignoreElements An array of element names that
	 *				must be ignored during the search.
	 */
	GetPreviousSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements )
	{
		if ( !currentNode )
			return null ;

		if ( stopSearchElements && currentNode.nodeType == 1 && currentNode.nodeName.IEquals( stopSearchElements ) )
			return null ;

		if ( currentNode.previousSibling )
			currentNode = currentNode.previousSibling ;
		else
			return this.GetPreviousSourceElement( currentNode.parentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;

		while ( currentNode )
		{
			if ( currentNode.nodeType == 1 )
			{
				if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) )
					break ;

				if ( !ignoreElements || !currentNode.nodeName.IEquals( ignoreElements ) )
					return currentNode ;
			}
			else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 )
				break ;

			if ( currentNode.lastChild )
				currentNode = currentNode.lastChild ;
			else
				return this.GetPreviousSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
		}

		return null ;
	},

	/*
	 * Gets the next element (nodeType=1) in the source order. Returns
	 * "null" If no element is found.
	 *		@param {Object} currentNode The node to start searching from.
	 *		@param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be
	 *				handled. If set to "true", only white spaces text nodes
	 *				will be ignored, while non white space text nodes will stop
	 *				the search, returning null. If "false" or omitted, all
	 *				text nodes are ignored.
	 *		@param {string[]} stopSearchElements An array of element names that
	 *				will cause the search to stop when found, returning null.
	 *				May be omitted (or null).
	 *		@param {string[]} ignoreElements An array of element names that
	 *				must be ignored during the search.
	 */
	GetNextSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements, startFromSibling )
	{
		while( ( currentNode = this.GetNextSourceNode( currentNode, startFromSibling ) ) )	// Only one "=".
		{
			if ( currentNode.nodeType == 1 )
			{
				if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) )
					break ;

				if ( ignoreElements && currentNode.nodeName.IEquals( ignoreElements ) )
					return this.GetNextSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;

				return currentNode ;
			}
			else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 )
				break ;
		}

		return null ;
	},

	/*
	 * Get the next DOM node available in source order.
	 */
	GetNextSourceNode : function( currentNode, startFromSibling, nodeType, stopSearchNode )
	{
		if ( !currentNode )
			return null ;

		var node ;

		if ( !startFromSibling && currentNode.firstChild )
			node = currentNode.firstChild ;
		else
		{
			if ( stopSearchNode && currentNode == stopSearchNode )
				return null ;

			node = currentNode.nextSibling ;

			if ( !node && ( !stopSearchNode || stopSearchNode != currentNode.parentNode ) )
				return this.GetNextSourceNode( currentNode.parentNode, true, nodeType, stopSearchNode ) ;
		}

		if ( nodeType && node && node.nodeType != nodeType )
			return this.GetNextSourceNode( node, false, nodeType, stopSearchNode ) ;

		return node ;
	},

	/*
	 * Get the next DOM node available in source order.
	 */
	GetPreviousSourceNode : function( currentNode, startFromSibling, nodeType, stopSearchNode )
	{
		if ( !currentNode )
			return null ;

		var node ;

		if ( !startFromSibling && currentNode.lastChild )
			node = currentNode.lastChild ;
		else
		{
			if ( stopSearchNode && currentNode == stopSearchNode )
				return null ;

			node = currentNode.previousSibling ;

			if ( !node && ( !stopSearchNode || stopSearchNode != currentNode.parentNode ) )
				return this.GetPreviousSourceNode( currentNode.parentNode, true, nodeType, stopSearchNode ) ;
		}

		if ( nodeType && node && node.nodeType != nodeType )
			return this.GetPreviousSourceNode( node, false, nodeType, stopSearchNode ) ;

		return node ;
	},

	// Inserts a element after a existing one.
	InsertAfterNode : function( existingNode, newNode )
	{
		return existingNode.parentNode.insertBefore( newNode, existingNode.nextSibling ) ;
	},

	GetParents : function( node )
	{
		var parents = new Array() ;

		while ( node )
		{
			parents.unshift( node ) ;
			node = node.parentNode ;
		}

		return parents ;
	},

	GetCommonParents : function( node1, node2 )
	{
		var p1 = this.GetParents( node1 ) ;
		var p2 = this.GetParents( node2 ) ;
		var retval = [] ;
		for ( var i = 0 ; i < p1.length ; i++ )
		{
			if ( p1[i] == p2[i] )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一二三精品| 日韩精品亚洲专区| 亚洲高清三级视频| 极品瑜伽女神91| 日本精品一区二区三区高清| 欧美一区二区三区视频| 亚洲色图在线播放| 免费人成精品欧美精品| av在线播放一区二区三区| 日韩免费在线观看| 亚洲一区二区三区在线播放| 日韩不卡免费视频| 一本一道久久a久久精品| 国产日产欧产精品推荐色| 亚洲二区在线视频| 成人性生交大片免费看中文| 91精选在线观看| 久久免费偷拍视频| 日韩av二区在线播放| 91美女视频网站| 久久久影视传媒| 日韩国产欧美在线播放| 在线免费av一区| 中文字幕欧美日韩一区| 天天做天天摸天天爽国产一区| 成人激情校园春色| 精品日韩欧美一区二区| 免费高清在线一区| 91黄色免费观看| 一区二区三区在线视频免费观看| 国内国产精品久久| 高清视频一区二区| 久久久无码精品亚洲日韩按摩| 亚洲国产综合在线| 91.com视频| 婷婷成人综合网| 欧美精品aⅴ在线视频| 综合激情成人伊人| 成人av影院在线| 亚洲少妇30p| 91在线观看视频| 亚洲精品欧美综合四区| 91麻豆6部合集magnet| 亚洲精品视频在线| 91视频一区二区| 欧美精品一区二区三区在线| 国内精品在线播放| 亚洲精品在线观| 北条麻妃一区二区三区| 国产精品视频免费看| 91美女片黄在线观看| 亚洲男人的天堂网| 成人动漫av在线| 亚洲欧美偷拍三级| 99久久精品国产精品久久| 中文字幕在线不卡视频| www.爱久久.com| 亚洲国产精品综合小说图片区| 色88888久久久久久影院按摩| 亚瑟在线精品视频| 日韩精品中文字幕一区二区三区| 免费人成网站在线观看欧美高清| 精品国精品国产| 国产精品一区二区在线播放 | 一区二区三区蜜桃网| 一本在线高清不卡dvd| 日韩成人精品在线观看| 日韩午夜小视频| 成人av免费在线| 亚洲午夜久久久久久久久电影网| av动漫一区二区| 日本欧洲一区二区| 精品捆绑美女sm三区| 色爱区综合激月婷婷| 亚洲444eee在线观看| 国产精品视频免费看| 色欧美片视频在线观看在线视频| 一区二区三区四区不卡视频| 51午夜精品国产| 国产尤物一区二区| 亚洲福利视频一区| 精品久久久久久久久久久院品网| 丁香激情综合国产| 亚洲国产欧美另类丝袜| 国产精品美女久久久久久久网站| 91麻豆免费看片| 国产精品中文字幕一区二区三区| 亚洲精品中文在线观看| 久久精品夜色噜噜亚洲a∨| 欧美在线免费视屏| 亚洲午夜一区二区三区| 中文字幕一区二区三区视频| 91麻豆精品国产91久久久久久| 91网站在线播放| 激情综合网天天干| 视频一区国产视频| 亚洲图片激情小说| 国产精品欧美久久久久一区二区| 欧美一级淫片007| 丁香网亚洲国际| 日韩精品一二三| 亚洲乱码国产乱码精品精的特点 | 91精品福利视频| 成人一级黄色片| 久久夜色精品国产噜噜av| 欧美精品日韩精品| 97se亚洲国产综合在线| av男人天堂一区| 国产又粗又猛又爽又黄91精品| 久草这里只有精品视频| 亚洲黄色小视频| 一区二区三区不卡在线观看| 欧美国产一区二区| 国产精品视频第一区| 欧美艳星brazzers| 99精品一区二区| 美腿丝袜亚洲色图| 日韩中文欧美在线| 日韩电影在线观看一区| 亚洲综合色婷婷| 欧美日韩高清在线播放| 欧美色涩在线第一页| 欧美综合欧美视频| 欧美日韩视频第一区| 在线区一区二视频| 91精品国产综合久久久蜜臀粉嫩 | 久久亚洲精品国产精品紫薇| 精品入口麻豆88视频| 91精品国产91久久久久久最新毛片 | www.欧美色图| 国产a久久麻豆| 久久99精品国产.久久久久久| 日韩影院精彩在线| 亚洲欧洲av一区二区三区久久| 亚洲色图在线播放| 综合久久给合久久狠狠狠97色| 亚洲在线视频免费观看| 亚洲五码中文字幕| 美脚の诱脚舐め脚责91| 麻豆精品久久久| 国产精品羞羞答答xxdd| 国产成人av网站| 99精品视频在线观看免费| 91欧美激情一区二区三区成人| 91麻豆精品在线观看| 在线观看一区二区视频| 国产高清在线观看免费不卡| 91丨porny丨国产入口| 色婷婷久久久亚洲一区二区三区| 欧美一级欧美三级在线观看| 日韩三级在线观看| 国产精品理伦片| 一区二区三区精密机械公司| 久久精品国产77777蜜臀| 国产精品亚洲第一区在线暖暖韩国| 91麻豆免费观看| 911国产精品| **欧美大码日韩| 奇米影视一区二区三区| 成人深夜视频在线观看| 色婷婷综合久色| 欧美人与禽zozo性伦| 26uuu另类欧美亚洲曰本| 久久综合久色欧美综合狠狠| 亚洲精品成a人| 青青国产91久久久久久| 91免费观看视频在线| 欧美老年两性高潮| 亚洲人成小说网站色在线| 日韩精品一二三区| 一本色道综合亚洲| 日韩视频在线一区二区| 亚洲最大的成人av| 免费的国产精品| 欧美三片在线视频观看| 精品国偷自产国产一区| 日本亚洲三级在线| 成人性视频免费网站| 精品伦理精品一区| 亚洲一区二区三区四区五区中文| 国产成人小视频| 欧美美女视频在线观看| 亚洲欧美日韩小说| 国产精品羞羞答答xxdd| 欧美一级久久久| 亚洲色图欧美偷拍| 国产99久久久国产精品潘金| 欧美精品在线观看播放| 国产视频911| 激情文学综合网| 91精品国模一区二区三区| 亚洲精品大片www| 色综合天天综合在线视频| 久久久欧美精品sm网站| 九一九一国产精品| 91精品国产综合久久久久久久久久 | 欧美日韩国产区一| 精品久久国产老人久久综合| 国产日韩欧美制服另类| 欧美aa在线视频|