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

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

?? fckdomtools.js

?? 強大的個人日志系統,界面華麗
?? 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一区二区三区免费野_久草精品视频
亚洲精品国产第一综合99久久| www.66久久| 欧美老肥妇做.爰bbww| 洋洋成人永久网站入口| 91行情网站电视在线观看高清版| 中文字幕一区二区在线观看| 波多野结衣一区二区三区| 最新高清无码专区| 色综合天天在线| 亚洲猫色日本管| 欧美视频一区二区在线观看| 午夜不卡av免费| 日韩久久久久久| 国产成人精品三级| 综合久久久久综合| 欧美性高清videossexo| 免费在线一区观看| 国产欧美综合在线观看第十页| 99久久伊人久久99| 香蕉久久夜色精品国产使用方法 | 欧美va亚洲va国产综合| 国产在线精品免费av| 欧美国产成人在线| 在线欧美一区二区| 精品一区二区三区影院在线午夜| 国产人妖乱国产精品人妖| www.av精品| 三级一区在线视频先锋| 国产午夜精品理论片a级大结局| av毛片久久久久**hd| 日韩专区一卡二卡| 久久久激情视频| 在线观看日产精品| 精品一区二区久久久| 亚洲日本中文字幕区| 91 com成人网| 成人亚洲精品久久久久软件| 艳妇臀荡乳欲伦亚洲一区| 精品欧美一区二区三区精品久久 | 日韩福利电影在线| 欧美激情一二三区| 在线播放中文一区| www.亚洲人| 日本伊人精品一区二区三区观看方式| 国产夜色精品一区二区av| 欧美日韩三级一区| 成人app网站| 日本中文一区二区三区| 亚洲日本在线a| 欧美电影免费观看高清完整版在线观看| 99riav久久精品riav| 久久爱另类一区二区小说| 亚洲日本中文字幕区| 久久久精品免费网站| 欧美日韩国产影片| 色综合久久综合| 国产精品综合一区二区三区| 午夜精品久久久久影视| 国产精品久久久久久久久果冻传媒| 欧美精品丝袜久久久中文字幕| 波多野结衣精品在线| 久久99精品久久久久婷婷| 亚洲成人777| 综合激情网...| 国产网红主播福利一区二区| 91精品黄色片免费大全| 色欧美日韩亚洲| 99国产精品国产精品毛片| 国产成人精品一区二| 男男成人高潮片免费网站| 亚洲mv在线观看| 一区二区三区资源| 亚洲婷婷在线视频| 亚洲国产精品二十页| 久久久欧美精品sm网站| 欧美r级在线观看| 欧美精品777| 欧美性猛交xxxxxx富婆| 色8久久人人97超碰香蕉987| 成人av电影在线观看| 福利电影一区二区| 高清不卡一二三区| 成人深夜福利app| 国产成都精品91一区二区三| 国产精品香蕉一区二区三区| 精品一区二区三区免费播放| 久久超碰97中文字幕| 日本欧洲一区二区| 久久精品国产精品亚洲综合| 免费国产亚洲视频| 精东粉嫩av免费一区二区三区| 日韩国产精品91| 日韩av一区二区在线影视| 日本在线播放一区二区三区| 蜜桃视频在线观看一区二区| 美女在线观看视频一区二区| 久久99精品久久久久久久久久久久| 精品一区二区日韩| 成人精品免费网站| 色偷偷成人一区二区三区91| 色婷婷综合久色| 欧美专区日韩专区| 欧美精品 日韩| 538prom精品视频线放| 日韩一级大片在线观看| 久久综合国产精品| 国产午夜精品福利| 亚洲免费观看高清在线观看| 1024亚洲合集| 亚洲成人动漫在线免费观看| 亚洲国产色一区| 午夜伊人狠狠久久| 日本欧美韩国一区三区| 午夜精品福利一区二区蜜股av| 婷婷夜色潮精品综合在线| 人人超碰91尤物精品国产| 久久国产人妖系列| 懂色av一区二区三区蜜臀| 94-欧美-setu| 精品视频在线免费观看| 欧美一区二区视频在线观看| 欧美一区二区福利视频| 国产日韩av一区| 艳妇臀荡乳欲伦亚洲一区| 免费av网站大全久久| 国产一区二区三区高清播放| 成人avav在线| 欧美在线不卡视频| 26uuu国产电影一区二区| 国产欧美日韩另类一区| 一区二区三区日本| 精品一区精品二区高清| 99精品久久只有精品| 日韩情涩欧美日韩视频| 国产日韩精品一区二区三区在线| 亚洲欧美日韩国产综合| 日韩激情视频在线观看| 国产成人久久精品77777最新版本| 国产乱色国产精品免费视频| 欧亚一区二区三区| 国产亚洲精品超碰| 亚洲图片有声小说| 国产一区二区0| 一本一道综合狠狠老| 久久久久成人黄色影片| 亚洲在线免费播放| 国产专区综合网| 欧美自拍偷拍一区| 国产视频一区在线观看| 午夜视频在线观看一区| 99视频一区二区三区| 精品日韩一区二区| 亚洲精品久久7777| 激情久久久久久久久久久久久久久久| 99精品欧美一区二区蜜桃免费 | 在线观看网站黄不卡| 欧美日韩精品一区二区天天拍小说| 国产欧美精品在线观看| 日韩精品免费专区| 99精品欧美一区二区蜜桃免费 | 欧美变态凌虐bdsm| 亚洲黄色小视频| 国产剧情一区二区三区| 91麻豆蜜桃一区二区三区| 国产三级久久久| 免费看欧美美女黄的网站| 欧美综合久久久| 国产精品乱码一区二区三区软件 | 一区二区不卡在线播放 | 亚洲午夜国产一区99re久久| 国产一区二区在线观看视频| 欧美一区二区三区四区高清| 亚洲免费观看高清完整版在线 | 激情综合色播激情啊| 日韩精品影音先锋| 婷婷国产v国产偷v亚洲高清| 欧洲精品视频在线观看| 亚洲人午夜精品天堂一二香蕉| 国产成人av一区二区三区在线观看| 久久久青草青青国产亚洲免观| 久久国产人妖系列| 欧美一区二区三区免费视频| 亚洲五月六月丁香激情| 日本精品一区二区三区四区的功能| 国产精品久久久久影院色老大| 成人黄色电影在线| 国产精品久久久久影视| 色哟哟在线观看一区二区三区| 亚洲欧洲无码一区二区三区| 国产盗摄一区二区三区| 欧美精品成人一区二区三区四区| 日韩不卡一区二区| 日韩欧美国产一二三区| 午夜激情久久久| 91麻豆精品国产91久久久久| 亚洲一区影音先锋| 欧美日韩亚洲另类| 午夜精品久久久| 欧美一区三区四区| 精品一区二区三区久久|