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

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

?? fckstyle.js

?? 強大的個人日志系統,界面華麗
?? JS
?? 第 1 頁 / 共 4 頁
字號:

									/*jsl:fallthru*/

								default :
									FCKDomTools.RemoveAttribute( currentNode, att ) ;
							}
						}
					}
				}
				else
					mayRemove = !!styleOverrides[ elementName ] ;

				if ( mayRemove )
				{
					// Remove overrides defined to the same element name.
					this._RemoveOverrides( currentNode, styleOverrides[ elementName ] ) ;

					// Remove the element if no more attributes are available.
					this._RemoveNoAttribElement( currentNode ) ;
				}
			}

			// If we have reached the end of the selection, stop looping.
			if ( nextNode == endNode )
				break ;

			currentNode = nextNode ;
		}

		this._FixBookmarkStart( startNode ) ;

		// Re-select the original range.
		if ( selectIt )
			range.SelectBookmark( bookmark ) ;

		if ( updateRange )
			range.MoveToBookmark( bookmark ) ;
	},

	/**
	 * Checks if an element, or any of its attributes, is removable by the
	 * current style definition.
	 */
	CheckElementRemovable : function( element, fullMatch )
	{
		if ( !element )
			return false ;

		var elementName = element.nodeName.toLowerCase() ;

		// If the element name is the same as the style name.
		if ( elementName == this.Element )
		{
			// If no attributes are defined in the element.
			if ( !fullMatch && !FCKDomTools.HasAttributes( element ) )
				return true ;

			// If any attribute conflicts with the style attributes.
			var attribs = this._GetAttribsForComparison() ;
			var allMatched = ( attribs._length == 0 ) ;
			for ( var att in attribs )
			{
				if ( att == '_length' )
					continue ;

				if ( this._CompareAttributeValues( att, FCKDomTools.GetAttributeValue( element, att ), ( this.GetFinalAttributeValue( att ) || '' ) ) )
				{
					allMatched = true ;
					if ( !fullMatch )
						break ;
				}
				else
				{
					allMatched = false ;
					if ( fullMatch )
						return false ;
				}
			}
			if ( allMatched )
				return true ;
		}

		// Check if the element can be somehow overriden.
		var override = this._GetOverridesForComparison()[ elementName ] ;
		if ( override )
		{
			// If no attributes have been defined, remove the element.
			if ( !( attribs = override.Attributes ) ) // Only one "="
				return true ;

			for ( var i = 0 ; i < attribs.length ; i++ )
			{
				var attName = attribs[i][0] ;
				if ( FCKDomTools.HasAttribute( element, attName ) )
				{
					var attValue = attribs[i][1] ;

					// Remove the attribute if:
					//    - The override definition value is null ;
					//    - The override definition valie is a string that
					//      matches the attribute value exactly.
					//    - The override definition value is a regex that
					//      has matches in the attribute value.
					if ( attValue == null ||
							( typeof attValue == 'string' && FCKDomTools.GetAttributeValue( element, attName ) == attValue ) ||
							attValue.test( FCKDomTools.GetAttributeValue( element, attName ) ) )
						return true ;
				}
			}
		}

		return false ;
	},

	/**
	 * Get the style state for an element path. Returns "true" if the element
	 * is active in the path.
	 */
	CheckActive : function( elementPath )
	{
		switch ( this.GetType() )
		{
			case FCK_STYLE_BLOCK :
				return this.CheckElementRemovable( elementPath.Block || elementPath.BlockLimit, true ) ;

			case FCK_STYLE_INLINE :

				var elements = elementPath.Elements ;

				for ( var i = 0 ; i < elements.length ; i++ )
				{
					var element = elements[i] ;

					if ( element == elementPath.Block || element == elementPath.BlockLimit )
						continue ;

					if ( this.CheckElementRemovable( element, true ) )
						return true ;
				}
		}
		return false ;
	},

	/**
	 * Removes an inline style from inside an element tree. The element node
	 * itself is not checked or removed, only the child tree inside of it.
	 */
	RemoveFromElement : function( element )
	{
		var attribs = this._GetAttribsForComparison() ;
		var overrides = this._GetOverridesForComparison() ;

		// Get all elements with the same name.
		var innerElements = element.getElementsByTagName( this.Element ) ;

		for ( var i = innerElements.length - 1 ; i >= 0 ; i-- )
		{
			var innerElement = innerElements[i] ;

			// Remove any attribute that conflict with this style, no matter
			// their values.
			for ( var att in attribs )
			{
				if ( FCKDomTools.HasAttribute( innerElement, att ) )
				{
					switch ( att )
					{
						case 'style' :
							this._RemoveStylesFromElement( innerElement ) ;
							break ;

						case 'class' :
							// The 'class' element value must match (#1318).
							if ( FCKDomTools.GetAttributeValue( innerElement, att ) != this.GetFinalAttributeValue( att ) )
								continue ;

							/*jsl:fallthru*/

						default :
							FCKDomTools.RemoveAttribute( innerElement, att ) ;
					}
				}
			}

			// Remove overrides defined to the same element name.
			this._RemoveOverrides( innerElement, overrides[ this.Element ] ) ;

			// Remove the element if no more attributes are available.
			this._RemoveNoAttribElement( innerElement ) ;
		}

		// Now remove any other element with different name that is
		// defined to be overriden.
		for ( var overrideElement in overrides )
		{
			if ( overrideElement != this.Element )
			{
				// Get all elements.
				innerElements = element.getElementsByTagName( overrideElement ) ;

				for ( var i = innerElements.length - 1 ; i >= 0 ; i-- )
				{
					var innerElement = innerElements[i] ;
					this._RemoveOverrides( innerElement, overrides[ overrideElement ] ) ;
					this._RemoveNoAttribElement( innerElement ) ;
				}
			}
		}
	},

	_RemoveStylesFromElement : function( element )
	{
		var elementStyle = element.style.cssText ;
		var pattern = this.GetFinalStyleValue() ;

		if ( elementStyle.length > 0 && pattern.length == 0 )
			return ;

		pattern = '(^|;)\\s*(' +
			pattern.replace( /\s*([^ ]+):.*?(;|$)/g, '$1|' ).replace( /\|$/, '' ) +
			'):[^;]+' ;

		var regex = new RegExp( pattern, 'gi' ) ;

		elementStyle = elementStyle.replace( regex, '' ).Trim() ;

		if ( elementStyle.length == 0 || elementStyle == ';' )
			FCKDomTools.RemoveAttribute( element, 'style' ) ;
		else
			element.style.cssText = elementStyle.replace( regex, '' ) ;
	},

	/**
	 * Remove all attributes that are defined to be overriden,
	 */
	_RemoveOverrides : function( element, override )
	{
		var attributes = override && override.Attributes ;

		if ( attributes )
		{
			for ( var i = 0 ; i < attributes.length ; i++ )
			{
				var attName = attributes[i][0] ;

				if ( FCKDomTools.HasAttribute( element, attName ) )
				{
					var attValue	= attributes[i][1] ;

					// Remove the attribute if:
					//    - The override definition value is null ;
					//    - The override definition valie is a string that
					//      matches the attribute value exactly.
					//    - The override definition value is a regex that
					//      has matches in the attribute value.
					if ( attValue == null ||
							( attValue.test && attValue.test( FCKDomTools.GetAttributeValue( element, attName ) ) ) ||
							( typeof attValue == 'string' && FCKDomTools.GetAttributeValue( element, attName ) == attValue ) )
						FCKDomTools.RemoveAttribute( element, attName ) ;
				}
			}
		}
	},

	/**
	 * If the element has no more attributes, remove it.
	 */
	_RemoveNoAttribElement : function( element )
	{
		// If no more attributes remained in the element, remove it,
		// leaving its children.
		if ( !FCKDomTools.HasAttributes( element ) )
		{
			// Removing elements may open points where merging is possible,
			// so let's cache the first and last nodes for later checking.
			var firstChild	= element.firstChild ;
			var lastChild	= element.lastChild ;

			FCKDomTools.RemoveNode( element, true ) ;

			// Check the cached nodes for merging.
			this._MergeSiblings( firstChild ) ;

			if ( firstChild != lastChild )
				this._MergeSiblings( lastChild ) ;
		}
	},

	/**
	 * Creates a DOM element for this style object.
	 */
	BuildElement : function( targetDoc, element )
	{
		// Create the element.
		var el = element || targetDoc.createElement( this.Element ) ;

		// Assign all defined attributes.
		var attribs	= this._StyleDesc.Attributes ;
		var attValue ;
		if ( attribs )
		{
			for ( var att in attribs )
			{
				attValue = this.GetFinalAttributeValue( att ) ;

				if ( att.toLowerCase() == 'class' )
					el.className = attValue ;
				else
					el.setAttribute( att, attValue ) ;
			}
		}

		// Assign the style attribute.
		if ( this._GetStyleText().length > 0 )
			el.style.cssText = this.GetFinalStyleValue() ;

		return el ;
	},

	_CompareAttributeValues : function( attName, valueA, valueB )
	{
		if ( attName == 'style' && valueA && valueB )
		{
			valueA = valueA.replace( /;$/, '' ).toLowerCase() ;
			valueB = valueB.replace( /;$/, '' ).toLowerCase() ;
		}

		// Return true if they match or if valueA is null and valueB is an empty string
		return ( valueA == valueB || ( ( valueA === null || valueA === '' ) && ( valueB === null || valueB === '' ) ) )
	},

	GetFinalAttributeValue : function( attName )
	{
		var attValue = this._StyleDesc.Attributes ;
		var attValue = attValue ? attValue[ attName ] : null ;

		if ( !attValue && attName == 'style' )
			return this.GetFinalStyleValue() ;

		if ( attValue && this._Variables )
			// Using custom Replace() to guarantee the correct scope.
			attValue = attValue.Replace( FCKRegexLib.StyleVariableAttName, this._GetVariableReplace, this ) ;

		return attValue ;
	},

	GetFinalStyleValue : function()
	{
		var attValue = this._GetStyleText() ;

		if ( attValue.length > 0 && this._Variables )
		{
			// Using custom Replace() to guarantee the correct scope.
			attValue = attValue.Replace( FCKRegexLib.StyleVariableAttName, this._GetVariableReplace, this ) ;
			attValue = FCKTools.NormalizeCssText( attValue ) ;
		}

		return attValue ;
	},

	_GetVariableReplace : function()
	{
		// The second group in the regex is the variable name.
		return this._Variables[ arguments[2] ] || arguments[0] ;
	},

	/**
	 * Set the value of a variable attribute or style, to be used when
	 * appliying the style.
	 */
	SetVariable : function( name, value )
	{
		var variables = this._Variables ;

		if ( !variables )
			variables = this._Variables = {} ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品国产99久久久久久白柏| 精品国产自在久精品国产| 国产精品久久久久影院亚瑟| 国产精品亚洲一区二区三区在线 | 在线观看成人免费视频| 中文字幕亚洲一区二区va在线| 99久久国产综合精品麻豆| 亚洲国产激情av| 色乱码一区二区三区88| 亚洲一区二区三区四区五区中文| 欧美群妇大交群中文字幕| 日本女人一区二区三区| 久久夜色精品一区| av欧美精品.com| 亚洲一区二区三区四区在线免费观看 | 国产精品伦理在线| 99国产精品99久久久久久| 一区二区三区在线视频免费| 欧美日韩国产综合视频在线观看| 麻豆精品在线观看| 中文字幕在线播放不卡一区| 欧美制服丝袜第一页| 久久精品国产成人一区二区三区| 国产欧美日韩精品在线| 欧美日韩美女一区二区| 国产一区二区三区免费播放| 亚洲另类中文字| 日韩欧美在线综合网| 99re成人在线| 国产资源在线一区| 亚洲精品videosex极品| 欧美mv和日韩mv的网站| 91福利在线看| 国产一区二区日韩精品| 一区二区三区小说| 精品国产自在久精品国产| 成人国产一区二区三区精品| 亚洲码国产岛国毛片在线| 欧美精品久久一区| 国产麻豆日韩欧美久久| 亚洲男女一区二区三区| 日韩视频免费观看高清在线视频| 国产黄人亚洲片| 一区二区三区国产精品| 日韩美一区二区三区| 成人在线综合网| 午夜精品成人在线| 国产丝袜欧美中文另类| 欧美色精品天天在线观看视频| 六月婷婷色综合| 国产亚洲欧美在线| 在线观看日韩电影| 国产大片一区二区| 午夜欧美2019年伦理| 久久蜜桃一区二区| 欧美另类变人与禽xxxxx| 国产美女娇喘av呻吟久久| 亚洲女子a中天字幕| 91精品国产综合久久福利| 99精品久久免费看蜜臀剧情介绍| 久久成人免费日本黄色| 亚洲综合在线视频| 国产日产欧产精品推荐色| 欧美日韩国产成人在线免费| 成人黄色大片在线观看| 久久精品99国产精品| 亚洲精品一二三区| 国产女人18水真多18精品一级做 | 久久九九99视频| 91精品婷婷国产综合久久竹菊| 成年人网站91| 成人精品免费看| 国产一区二区三区美女| 日韩中文字幕区一区有砖一区 | 亚洲手机成人高清视频| 精品久久久久香蕉网| 欧美欧美午夜aⅴ在线观看| 成人高清视频在线| 麻豆精品一区二区综合av| 婷婷中文字幕一区三区| 一级日本不卡的影视| 中文字幕国产一区| 久久久午夜精品理论片中文字幕| 欧美三级午夜理伦三级中视频| 97精品久久久久中文字幕| 成人一区二区三区视频在线观看 | 高清日韩电视剧大全免费| 蜜臀va亚洲va欧美va天堂| 亚洲动漫第一页| 亚洲精品乱码久久久久久久久 | 美女www一区二区| 日韩国产欧美在线观看| 亚洲国产日韩在线一区模特| 亚洲视频 欧洲视频| 久久久久久久网| 日韩精品一区二区三区蜜臀 | 亚洲蜜桃精久久久久久久| 中文字幕第一区二区| 久久久久高清精品| 中文字幕 久热精品 视频在线| 久久久久国产一区二区三区四区 | 91理论电影在线观看| 成人少妇影院yyyy| 色88888久久久久久影院按摩| 色网综合在线观看| 欧美色国产精品| 日韩一区国产二区欧美三区| 日韩视频不卡中文| 中文字幕欧美区| 亚洲人成精品久久久久久| 亚洲精品日韩综合观看成人91| 亚洲精品视频在线观看网站| 午夜视频一区二区| 极品少妇一区二区| 国产成人福利片| 暴力调教一区二区三区| 在线观看视频91| 欧美一区二区三区电影| 精品美女一区二区| 欧美国产一区在线| 亚洲美女视频在线| 免费日本视频一区| 国产成人免费网站| 在线免费观看日本欧美| 5月丁香婷婷综合| 久久综合av免费| 亚洲精品自拍动漫在线| 奇米精品一区二区三区在线观看一| 美女视频黄 久久| 韩日欧美一区二区三区| 欧洲在线/亚洲| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品萝li| 日欧美一区二区| 成人福利视频网站| 69堂国产成人免费视频| 久久久久国色av免费看影院| 亚洲综合视频在线| 国产剧情在线观看一区二区| 色国产综合视频| 精品粉嫩超白一线天av| 亚洲欧美激情小说另类| 天堂午夜影视日韩欧美一区二区| 成年人国产精品| 精品日韩一区二区| 一区二区三区四区不卡在线| 黄一区二区三区| 色婷婷久久99综合精品jk白丝| 精品国偷自产国产一区| 亚洲综合色网站| 99免费精品视频| 在线看国产日韩| 久久久综合精品| 石原莉奈在线亚洲二区| 99久久久久久| 国产日韩欧美在线一区| 日韩有码一区二区三区| 97久久超碰精品国产| 久久久久久亚洲综合| 青草av.久久免费一区| 在线观看欧美精品| 中文在线资源观看网站视频免费不卡| 全国精品久久少妇| 91麻豆123| 亚洲女人的天堂| www.亚洲激情.com| wwwwww.欧美系列| 美国av一区二区| 91麻豆精品国产无毒不卡在线观看| 亚洲欧洲av另类| 成人一区二区三区在线观看| 欧美丰满少妇xxxxx高潮对白| 夜夜嗨av一区二区三区| 色妞www精品视频| 中文字幕欧美日本乱码一线二线| 狠狠色丁香久久婷婷综合丁香| 日韩欧美中文字幕一区| 日一区二区三区| 欧美四级电影网| 亚洲精品自拍动漫在线| 欧美日韩午夜在线视频| 亚洲制服丝袜av| 一本久久a久久免费精品不卡| 国产精品乱人伦中文| 不卡的av在线播放| 中文一区二区在线观看| 懂色av中文一区二区三区| 中文字幕欧美三区| av电影一区二区| 国产精品丝袜一区| 色综合天天天天做夜夜夜夜做| 亚洲婷婷综合久久一本伊一区 | 亚洲一区二区在线免费观看视频 | 亚洲欧美日本韩国| 在线观看免费一区| 天天射综合影视| 日韩免费性生活视频播放| 国产精品白丝av| 国产精品白丝在线| 国产精品99久久久|