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

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

?? fckdomtools.js

?? 強大的個人日志系統,界面華麗
?? JS
?? 第 1 頁 / 共 3 頁
字號:
				retval.push( p1[i] ) ;
		}
		return retval ;
	},

	GetCommonParentNode : function( node1, node2, tagList )
	{
		var tagMap = {} ;
		if ( ! tagList.pop )
			tagList = [ tagList ] ;
		while ( tagList.length > 0 )
			tagMap[tagList.pop().toLowerCase()] = 1 ;

		var commonParents = this.GetCommonParents( node1, node2 ) ;
		var currentParent = null ;
		while ( ( currentParent = commonParents.pop() ) )
		{
			if ( tagMap[currentParent.nodeName.toLowerCase()] )
				return currentParent ;
		}
		return null ;
	},

	GetIndexOf : function( node )
	{
		var currentNode = node.parentNode ? node.parentNode.firstChild : null ;
		var currentIndex = -1 ;

		while ( currentNode )
		{
			currentIndex++ ;

			if ( currentNode == node )
				return currentIndex ;

			currentNode = currentNode.nextSibling ;
		}

		return -1 ;
	},

	PaddingNode : null,

	EnforcePaddingNode : function( doc, tagName )
	{
		// In IE it can happen when the page is reloaded that doc or doc.body is null, so exit here
		try
		{
			if ( !doc || !doc.body )
				return ;
		}
		catch (e)
		{
			return ;
		}

		this.CheckAndRemovePaddingNode( doc, tagName, true ) ;
		try
		{
			if ( doc.body.lastChild && ( doc.body.lastChild.nodeType != 1
					|| doc.body.lastChild.tagName.toLowerCase() == tagName.toLowerCase() ) )
				return ;
		}
		catch (e)
		{
			return ;
		}

		var node = doc.createElement( tagName ) ;
		if ( FCKBrowserInfo.IsGecko && FCKListsLib.NonEmptyBlockElements[ tagName ] )
			FCKTools.AppendBogusBr( node ) ;
		this.PaddingNode = node ;
		if ( doc.body.childNodes.length == 1
				&& doc.body.firstChild.nodeType == 1
				&& doc.body.firstChild.tagName.toLowerCase() == 'br'
				&& ( doc.body.firstChild.getAttribute( '_moz_dirty' ) != null
					|| doc.body.firstChild.getAttribute( 'type' ) == '_moz' ) )
			doc.body.replaceChild( node, doc.body.firstChild ) ;
		else
			doc.body.appendChild( node ) ;
	},

	CheckAndRemovePaddingNode : function( doc, tagName, dontRemove )
	{
		var paddingNode = this.PaddingNode ;
		if ( ! paddingNode )
			return ;

		// If the padding node is changed, remove its status as a padding node.
		try
		{
			if ( paddingNode.parentNode != doc.body
				|| paddingNode.tagName.toLowerCase() != tagName
				|| ( paddingNode.childNodes.length > 1 )
				|| ( paddingNode.firstChild && paddingNode.firstChild.nodeValue != '\xa0'
					&& String(paddingNode.firstChild.tagName).toLowerCase() != 'br' ) )
			{
				this.PaddingNode = null ;
				return ;
			}
		}
		catch (e)
		{
				this.PaddingNode = null ;
				return ;
		}

		// Now we're sure the padding node exists, and it is unchanged, and it
		// isn't the only node in doc.body, remove it.
		if ( !dontRemove )
		{
			if ( paddingNode.parentNode.childNodes.length > 1 )
				paddingNode.parentNode.removeChild( paddingNode ) ;
			this.PaddingNode = null ;
		}
	},

	HasAttribute : function( element, attributeName )
	{
		if ( element.hasAttribute )
			return element.hasAttribute( attributeName ) ;
		else
		{
			var att = element.attributes[ attributeName ] ;
			return ( att != undefined && att.specified ) ;
		}
	},

	/**
	 * Checks if an element has "specified" attributes.
	 */
	HasAttributes : function( element )
	{
		var attributes = element.attributes ;

		for ( var i = 0 ; i < attributes.length ; i++ )
		{
			if ( FCKBrowserInfo.IsIE && attributes[i].nodeName == 'class' )
			{
				// IE has a strange bug. If calling removeAttribute('className'),
				// the attributes collection will still contain the "class"
				// attribute, which will be marked as "specified", even if the
				// outerHTML of the element is not displaying the class attribute.
				// Note : I was not able to reproduce it outside the editor,
				// but I've faced it while working on the TC of #1391.
				if ( element.className.length > 0 )
					return true ;
			}
			else if ( attributes[i].specified )
				return true ;
		}

		return false ;
	},

	/**
	 * Remove an attribute from an element.
	 */
	RemoveAttribute : function( element, attributeName )
	{
		if ( FCKBrowserInfo.IsIE && attributeName.toLowerCase() == 'class' )
			attributeName = 'className' ;

		return element.removeAttribute( attributeName, 0 ) ;
	},

	/**
	 * Removes an array of attributes from an element
	 */
	RemoveAttributes : function (element, aAttributes )
	{
		for ( var i = 0 ; i < aAttributes.length ; i++ )
			this.RemoveAttribute( element, aAttributes[i] );
	},

	GetAttributeValue : function( element, att )
	{
		var attName = att ;

		if ( typeof att == 'string' )
			att = element.attributes[ att ] ;
		else
			attName = att.nodeName ;

		if ( att && att.specified )
		{
			// IE returns "null" for the nodeValue of a "style" attribute.
			if ( attName == 'style' )
				return element.style.cssText ;
			// There are two cases when the nodeValue must be used:
			//		- for the "class" attribute (all browsers).
			//		- for events attributes (IE only).
			else if ( attName == 'class' || attName.indexOf('on') == 0 )
				return att.nodeValue ;
			else
			{
				// Use getAttribute to get its value  exactly as it is
				// defined.
				return element.getAttribute( attName, 2 ) ;
			}
		}
		return null ;
	},

	/**
	 * Checks whether one element contains the other.
	 */
	Contains : function( mainElement, otherElement )
	{
		// IE supports contains, but only for element nodes.
		if ( mainElement.contains && otherElement.nodeType == 1 )
			return mainElement.contains( otherElement ) ;

		while ( ( otherElement = otherElement.parentNode ) )	// Only one "="
		{
			if ( otherElement == mainElement )
				return true ;
		}
		return false ;
	},

	/**
	 * Breaks a parent element in the position of one of its contained elements.
	 * For example, in the following case:
	 *		<b>This <i>is some<span /> sample</i> test text</b>
	 * If element = <span />, we have these results:
	 *		<b>This <i>is some</i><span /><i> sample</i> test text</b>			(If parent = <i>)
	 *		<b>This <i>is some</i></b><span /><b><i> sample</i> test text</b>	(If parent = <b>)
	 */
	BreakParent : function( element, parent, reusableRange )
	{
		var range = reusableRange || new FCKDomRange( FCKTools.GetElementWindow( element ) ) ;

		// We'll be extracting part of this element, so let's use our
		// range to get the correct piece.
		range.SetStart( element, 4 ) ;
		range.SetEnd( parent, 4 ) ;

		// Extract it.
		var docFrag = range.ExtractContents() ;

		// Move the element outside the broken element.
		range.InsertNode( element.parentNode.removeChild( element ) ) ;

		// Re-insert the extracted piece after the element.
		docFrag.InsertAfterNode( element ) ;

		range.Release( !!reusableRange ) ;
	},

	/**
	 * Retrieves a uniquely identifiable tree address of a DOM tree node.
	 * The tree address returns is an array of integers, with each integer
	 * indicating a child index from a DOM tree node, starting from
	 * document.documentElement.
	 *
	 * For example, assuming <body> is the second child from <html> (<head>
	 * being the first), and we'd like to address the third child under the
	 * fourth child of body, the tree address returned would be:
	 * [1, 3, 2]
	 *
	 * The tree address cannot be used for finding back the DOM tree node once
	 * the DOM tree structure has been modified.
	 */
	GetNodeAddress : function( node, normalized )
	{
		var retval = [] ;
		while ( node && node != FCKTools.GetElementDocument( node ).documentElement )
		{
			var parentNode = node.parentNode ;
			var currentIndex = -1 ;
			for( var i = 0 ; i < parentNode.childNodes.length ; i++ )
			{
				var candidate = parentNode.childNodes[i] ;
				if ( normalized === true &&
						candidate.nodeType == 3 &&
						candidate.previousSibling &&
						candidate.previousSibling.nodeType == 3 )
					continue;
				currentIndex++ ;
				if ( parentNode.childNodes[i] == node )
					break ;
			}
			retval.unshift( currentIndex ) ;
			node = node.parentNode ;
		}
		return retval ;
	},

	/**
	 * The reverse transformation of FCKDomTools.GetNodeAddress(). This
	 * function returns the DOM node pointed to by its index address.
	 */
	GetNodeFromAddress : function( doc, addr, normalized )
	{
		var cursor = doc.documentElement ;
		for ( var i = 0 ; i < addr.length ; i++ )
		{
			var target = addr[i] ;
			if ( ! normalized )
			{
				cursor = cursor.childNodes[target] ;
				continue ;
			}

			var currentIndex = -1 ;
			for (var j = 0 ; j < cursor.childNodes.length ; j++ )
			{
				var candidate = cursor.childNodes[j] ;
				if ( normalized === true &&
						candidate.nodeType == 3 &&
						candidate.previousSibling &&
						candidate.previousSibling.nodeType == 3 )
					continue ;
				currentIndex++ ;
				if ( currentIndex == target )
				{
					cursor = candidate ;
					break ;
				}
			}
		}
		return cursor ;
	},

	CloneElement : function( element )
	{
		element = element.cloneNode( false ) ;

		// The "id" attribute should never be cloned to avoid duplication.
		element.removeAttribute( 'id', false ) ;

		return element ;
	},

	ClearElementJSProperty : function( element, attrName )
	{
		if ( FCKBrowserInfo.IsIE )
			element.removeAttribute( attrName ) ;
		else
			delete element[attrName] ;
	},

	SetElementMarker : function ( markerObj, element, attrName, value)
	{
		var id = String( parseInt( Math.random() * 0xffffffff, 10 ) ) ;
		element._FCKMarkerId = id ;
		element[attrName] = value ;
		if ( ! markerObj[id] )
			markerObj[id] = { 'element' : element, 'markers' : {} } ;
		markerObj[id]['markers'][attrName] = value ;
	},

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利一区二区| 91丨porny丨国产| 成人av在线一区二区三区| 在线观看欧美日本| 久久婷婷色综合| 日韩综合小视频| 一本久久a久久免费精品不卡| 91精品国产综合久久久久| 国产精品九色蝌蚪自拍| 精品在线播放免费| 7777精品伊人久久久大香线蕉最新版| 2020国产精品久久精品美国| 一区二区三区不卡视频| 国产99久久久国产精品| 精品国产电影一区二区| 丝袜脚交一区二区| 在线观看一区二区视频| 国产精品乱人伦中文| 国产精品伊人色| 欧美xxxxx牲另类人与| 天天免费综合色| 欧美日韩免费电影| 亚洲一区二区精品视频| 91国偷自产一区二区三区成为亚洲经典 | 91成人免费在线| 国产精品久久久爽爽爽麻豆色哟哟| 日韩成人精品在线观看| 欧美精品久久一区| 亚洲成人精品在线观看| 精品视频在线看| 一区二区三区日韩精品| 欧洲精品视频在线观看| 一区二区三区在线视频免费 | 美国毛片一区二区| 欧美精品视频www在线观看| 亚洲免费伊人电影| 色噜噜久久综合| 亚洲黄色片在线观看| 91蜜桃免费观看视频| 亚洲视频免费看| 色综合色狠狠综合色| 亚洲综合一区二区精品导航| 欧美综合在线视频| 亚洲成人在线网站| 欧美大片免费久久精品三p| 国产永久精品大片wwwapp| 国产日韩欧美一区二区三区乱码 | 欧美国产成人精品| 国产a区久久久| 最新久久zyz资源站| 欧美中文字幕一区二区三区亚洲 | 亚洲女人****多毛耸耸8| 日本韩国一区二区三区| 性久久久久久久久| 欧美本精品男人aⅴ天堂| 国产精品一区一区| 亚洲欧美另类图片小说| 欧美日韩一级二级三级| 紧缚奴在线一区二区三区| 亚洲欧洲精品一区二区三区| 欧美午夜精品久久久久久孕妇 | 国产乱码精品一品二品| 亚洲欧美自拍偷拍色图| 在线综合视频播放| 国产精品综合视频| 亚洲乱码中文字幕综合| 欧美一区二区精品在线| 成a人片国产精品| 蜜臀久久99精品久久久画质超高清 | 成人欧美一区二区三区白人| 欧美三级乱人伦电影| 狂野欧美性猛交blacked| 最新日韩在线视频| 欧美一区二区大片| 99r国产精品| 九九**精品视频免费播放| 日韩一区在线看| 日韩精品一区二区三区在线观看| 99久久99精品久久久久久| 麻豆91精品视频| 亚洲欧洲综合另类| www精品美女久久久tv| 欧美日产国产精品| 99国产欧美另类久久久精品| 激情另类小说区图片区视频区| 亚洲人妖av一区二区| 日韩精品中文字幕在线不卡尤物| 91免费国产在线观看| 狠狠色综合播放一区二区| 午夜视黄欧洲亚洲| 亚洲欧洲国产日本综合| 久久九九久久九九| 日韩一区二区高清| 欧美日韩二区三区| 91黄色激情网站| 91网站黄www| 岛国精品一区二区| 国产麻豆成人精品| 日本欧美在线观看| 首页国产欧美日韩丝袜| 亚洲精品高清视频在线观看| 国产精品久久久久久久久久免费看| 日韩一级完整毛片| 制服丝袜亚洲网站| 欧美日韩久久一区二区| 日本久久精品电影| 91黄色免费观看| 91老师片黄在线观看| 91丨九色丨蝌蚪富婆spa| 成人黄色av电影| 粉嫩久久99精品久久久久久夜| 国内不卡的二区三区中文字幕| 蜜臀91精品一区二区三区| 美国十次了思思久久精品导航| 日韩福利电影在线| 日本欧美一区二区三区| 日本欧美加勒比视频| 日本一道高清亚洲日美韩| 三级精品在线观看| 久久99精品久久久久久国产越南 | 欧美中文字幕一区| 欧美视频精品在线观看| 欧美在线不卡一区| 3d成人h动漫网站入口| 日韩亚洲欧美中文三级| 精品国产一区二区三区不卡| 久久综合久久综合亚洲| 国产精品三级久久久久三级| 亚洲欧美日韩系列| 亚洲电影一区二区| 精品一区二区三区视频| 激情欧美一区二区三区在线观看| 国产精品69久久久久水密桃| av激情亚洲男人天堂| 欧美无人高清视频在线观看| 欧美一区二区三区不卡| 久久精品一区八戒影视| 亚洲欧美日韩在线不卡| 天天做天天摸天天爽国产一区 | 99精品在线免费| 欧美日韩三级在线| 久久久久久毛片| 亚洲综合色在线| 激情综合色综合久久综合| 99久久免费视频.com| 欧美日韩成人在线| 欧美激情在线免费观看| 亚洲综合在线观看视频| 蜜臀av性久久久久蜜臀aⅴ| 高清成人在线观看| 欧美日韩一区在线| 国产女主播一区| 日韩和欧美一区二区| 懂色av中文字幕一区二区三区| 精品视频一区二区不卡| 久久男人中文字幕资源站| 亚洲人吸女人奶水| 国产精选一区二区三区| 欧美酷刑日本凌虐凌虐| 国产精品美女久久久久高潮| 亚洲成av人**亚洲成av**| 国产成人精品www牛牛影视| 欧美性大战xxxxx久久久| 久久九九99视频| 男女男精品视频| 欧美性xxxxxxxx| 亚洲欧洲日韩在线| 国产一区二区三区四| 欧美人与性动xxxx| 国产精品久久久一区麻豆最新章节| 免费成人av在线| 在线观看日韩毛片| 亚洲人精品午夜| 国产69精品一区二区亚洲孕妇 | 久久99精品久久久久久| 欧美丝袜第三区| 亚洲女人的天堂| 成人小视频在线| 精品免费国产二区三区| 午夜电影网亚洲视频| 日本韩国精品在线| 1区2区3区欧美| 成人亚洲一区二区一| 国产丝袜欧美中文另类| 麻豆国产精品官网| 日韩一级完整毛片| 青青草97国产精品免费观看 | 精品国产第一区二区三区观看体验| 亚洲超碰97人人做人人爱| 91成人在线精品| 一区二区三区四区在线免费观看| 91在线丨porny丨国产| 中文字幕在线一区免费| 国产高清亚洲一区| 国产日韩欧美精品在线| 国产美女久久久久| 久久久91精品国产一区二区三区| 国产一区不卡在线| 久久久777精品电影网影网| 国产剧情一区二区|