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

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

?? fcktools_gecko.js

?? FCKeditor 很強的可視化編輯器.支持asp,php等多種web編程語言.(要支持jsp需另下載插件) 開源免費.
?? JS
字號:
?/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2005 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * 		http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * 		http://www.fckeditor.net/
 * 
 * "Support Open Source software. What about a donation today?"
 * 
 * File Name: fcktools_gecko.js
 * 	Utility functions. (Gecko version).
 * 
 * File Authors:
 * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 */

// Constant for the Gecko Bogus Node.
var GECKO_BOGUS = '<br _moz_editor_bogus_node="TRUE">' ;

// Appends a CSS file to a document.
FCKTools.AppendStyleSheet = function( documentElement, cssFileUrl )
{
	var e = documentElement.createElement( 'LINK' ) ;
	e.rel	= 'stylesheet' ;
	e.type	= 'text/css' ;
	e.href	= cssFileUrl ;
	documentElement.getElementsByTagName("HEAD")[0].appendChild( e ) ;
	return e ;
}

// Removes all attributes and values from the element.
FCKTools.ClearElementAttributes = function( element )
{
	// Loop throw all attributes in the element
	for ( var i = 0 ; i < element.attributes.length ; i++ )
	{
		// Remove the element by name.
		element.removeAttribute( element.attributes[i].name, 0 ) ;	// 0 : Case Insensitive
	}
}

// Returns an Array of strings with all defined in the elements inside another element.
FCKTools.GetAllChildrenIds = function( parentElement )
{
	// Create the array that will hold all Ids.
	var aIds = new Array() ;
	
	// Define a recursive function that search for the Ids.
	var fGetIds = function( parent )
	{
		for ( var i = 0 ; i < parent.childNodes.length ; i++ )
		{
			var sId = parent.childNodes[i].id ;
			
			// Check if the Id is defined for the element.
			if ( sId && sId.length > 0 ) aIds[ aIds.length ] = sId ;
			
			// Recursive call.
			fGetIds( parent.childNodes[i] ) ;
		}
	}
	
	// Start the recursive calls.
	fGetIds( parentElement ) ;

	return aIds ;
}

FCKTools.RemoveOuterTags = function( e )
{
	var oFragment = e.ownerDocument.createDocumentFragment() ;
			
	for ( var i = 0 ; i < e.childNodes.length ; i++ )
		oFragment.appendChild( e.childNodes[i] ) ;
			
	e.parentNode.replaceChild( oFragment, e ) ;
}

FCKTools.CreateXmlObject = function( object )
{
	switch ( object )
	{
		case 'XmlHttp' :
			return new XMLHttpRequest() ;
		case 'DOMDocument' :
			return document.implementation.createDocument( '', '', null ) ;
	}
	return null ;
}

FCKTools.DisableSelection = function( element )
{
	element.style.MozUserSelect	= 'none' ;	// Gecko only.
	// element.style.userSelect	= 'none' ;	// CSS3 (not supported yet).
}

// START iCM Modifications
/*
// Starting at the specified node, find the first inline node of the sequence
// For example, assume we have the following elements : <p>Some text <span>some more text</span> and <a href="href">some link</a> yet some more text</p>
// If the "some link" text node is the one specified, then the "Some text" text node will be the first inline node returned.
FCKTools.GetFirstInlineNode = function( oNode )
{
	if ( FCKRegexLib.BlockElements.test( oNode.nodeName ) )
		return oNode ;
	else if ( oNode.previousSibling && !FCKRegexLib.BlockElements.test( oNode.previousSibling.nodeName ) )
		return FCKTools.GetFirstInlineNode( oNode.previousSibling ) ;
	else if ( oNode.parentNode && !FCKRegexLib.BlockElements.test( oNode.parentNode.nodeName ) && oNode.parentNode.nodeName.toUpperCase() != "BODY" )
		return FCKTools.GetFirstInlineNode( oNode.parentNode ) ;
	else 
		return oNode ;
}

// Starting at the specified node, find the last inline node of the sequence
// For example, assume we have the following elements : <p>Some text <span>some more text</span> and <a href="href">some link</a> yet some more text</p>
// If the "some link" text node is the one specified, then the " yet some more text" text node will be the last inline node returned.
FCKTools.GetLastInlineNode = function( oNode )
{
	if ( FCKRegexLib.BlockElements.test( oNode.nodeName ) )
		return oNode ;
	else if ( oNode.nextSibling && !FCKRegexLib.BlockElements.test( oNode.nextSibling.nodeName ) )
		return FCKTools.GetLastInlineNode( oNode.nextSibling ) ;
	else if ( oNode.parentNode && !FCKRegexLib.BlockElements.test( oNode.parentNode.nodeName ) && oNode.parentNode.nodeName.toUpperCase() != "BODY" )
		return FCKTools.GetLastInlineNode( oNode.parentNode ) ;
	else
		return oNode ;
}


// Split the supplied parent at the specified child and (optionally) offset.
// Ensure that enclosing block elements are created where missing but that existing 
// block elements (table for example) don't get incorrectly nested. 
FCKTools.SplitNode = function( oParentBlockNode, oChildNode, nOffset )
{
	if ( typeof nOffset == "undefined" ) nOffset = 0 ;

	var oFragment = FCK.EditorDocument.createDocumentFragment() ;
	var oRange = FCK.EditorDocument.createRange() ;

	if ( FCKRegexLib.ListElements.test( oParentBlockNode.nodeName ) )
	{
		// Treat OL/UL parents differently as want to split at the specified
		// child LI node to create to OL/UL lists.
		oStartNode = oParentBlockNode.firstChild ;
		oEndNode = oParentBlockNode.lastChild ;
	}
	else
	{
		// Locate the inline nodes adjacent to the specified child node so that these can
		// be kept together.
		oStartNode = FCKTools.GetFirstInlineNode( oChildNode ) ;
		oEndNode = FCKTools.GetLastInlineNode( oChildNode ) ;
	}

	// Create a new tag which holds the content of the affected node(s) located before (but not including) the child node and offset
	if ( FCKRegexLib.BlockElements.test( oStartNode.nodeName ) && !FCKRegexLib.ListElements.test( oParentBlockNode.nodeName ) )
	{
		// First element of the bunch is already a block element so we don't want to wrap it with a new block element.
		// Just use this first node provided it is not the same as the last node (to prevent duplication), otherwise
		// create a new empty P element.
		if ( oStartNode != oEndNode )
		{
			oBlockNode1 = oStartNode.cloneNode( true ) ;
		}
		else
		{
			oBlockNode1 = FCK.EditorDocument.createElement( "P" ) ;
			oBlockNode1.innerHTML = GECKO_BOGUS ;
			
			if ( !FCKRegexLib.SpecialBlockElements.test( oParentBlockNode.nodeName ) )
				FCKTools.SetElementAttributes( oBlockNode1, oParentBlockNode.attributes ) ;  // Transfer across any class attributes, etc
		}
	}
	else
	{
		// First element of the bunch is not a block element (or it is a LI element which is a special case).
		// So ensure all of the inline nodes before the selection are wrapped with a suitable block element.
		var oBlockNode1 = FCK.EditorDocument.createElement( FCKRegexLib.SpecialBlockElements.test( oParentBlockNode.nodeName ) ? "P" : oParentBlockNode.tagName ) ;
		oRange.setStartBefore( oStartNode ) ;
		if ( nOffset == 0 )
			oRange.setEndBefore( oChildNode ) ;
		else
			oRange.setEnd( oChildNode, nOffset ) ;
		oBlockNode1.appendChild( oRange.cloneContents() ) ;
		oBlockNode1.innerHTML = oBlockNode1.innerHTML.replace(/[\x00-\x1F]/g, "") ; // Prevent any control characters returned within the innerHTML from causing problems
		if ( FCKTools.NodeIsEmpty( oBlockNode1 ) )
			oBlockNode1.innerHTML = GECKO_BOGUS ;		// Ensure it has some content, required for Gecko
		else
			oBlockNode1.innerHTML = oBlockNode1.innerHTML.replace( FCKRegexLib.EmptyElement, "" ) ; // Strip out any empty tags that may have been generated by the split
		if ( !FCKRegexLib.SpecialBlockElements.test( oParentBlockNode.nodeName ) )
			FCKTools.SetElementAttributes( oBlockNode1, oParentBlockNode.attributes ) ; 	// Transfer across any class attributes, etc
	}

	// Create a new tag which holds the content of the affected node(s) located after (and including) the child node
	if ( FCKRegexLib.BlockElements.test( oEndNode.nodeName ) && !FCKRegexLib.ListElements.test( oParentBlockNode.nodeName ) )
	{
		// Last element of the bunch is already a block element so we don't want to wrap it with a new block element.
		oBlockNode2 = oEndNode.cloneNode( true ) ;
	}
	else
	{
		// Last element of the bunch is not a block element (or it is a LI element which is a special case).
		// So ensure all of the inline nodes after and including the child/offset are wrapped with a suitable block element.
		var oBlockNode2 = FCK.EditorDocument.createElement( FCKRegexLib.SpecialBlockElements.test( oParentBlockNode.nodeName ) ? "P" : oParentBlockNode.tagName );
		oRange.setEndAfter( oEndNode );
		if ( nOffset == 0 )
			oRange.setStartBefore( oChildNode ) ;
		else
			oRange.setStart( oChildNode, nOffset );
		oBlockNode2.appendChild( oRange.cloneContents() ) ;
		oBlockNode2.innerHTML = oBlockNode2.innerHTML.replace(/[\x00-\x1F]/g, "") ;  // Prevent any control characters returned within the innerHTML from causing problems
		if ( FCKTools.NodeIsEmpty( oBlockNode2 ) ) 
			oBlockNode2.innerHTML = GECKO_BOGUS ; 			// Ensure it has some content, required for Gecko
		else
			oBlockNode2.innerHTML = oBlockNode2.innerHTML.replace( FCKRegexLib.EmptyElement, "" ) ; // Strip out any empty tags that may have been generated by the split
		if ( !FCKRegexLib.SpecialBlockElements.test( oParentBlockNode.nodeName ) )
			FCKTools.SetElementAttributes( oBlockNode2, oParentBlockNode.attributes ) ; 	// Transfer across any class attributes, etc
	}
	
	// Insert the resulting nodes into a document fragment
	oFragment.appendChild( oBlockNode1 );
	oFragment.appendChild( oBlockNode2 );
	
	// Replace the affected nodes with the new nodes (fragment)
	FCKTools.ReplaceNodes( oParentBlockNode, oStartNode, oEndNode, oFragment ) ;	
	
	// Return the second node so it can be used for setting cursor position, etc
	return oBlockNode2 ;
}

// Function that replaces the specified range of nodes (inclusive) within the supplied parent
// with the nodes stored in the supplied document fragment.
FCKTools.ReplaceNodes = function( oParentBlockNode, oStartNode, oEndNode, oFragment )
{
	var oRange = FCK.EditorDocument.createRange() ;
	
	// Delete the affected node(s)
	if ( !FCKRegexLib.SpecialBlockElements.test( oParentBlockNode.nodeName ) && (oParentBlockNode.firstChild == oStartNode) && (oParentBlockNode.lastChild == oEndNode) )
	{
		// Entire parent block node is to be replaced so insert the two new block elements before it 
		// and then remove the old node
		oRange.selectNode ( oParentBlockNode );
	}
	else
	{
		// Only part of the parent block node is to be replaced so insert the two new block elements
		// before the first inline node of the affected content and then remove the old nodes
		oRange.setEndAfter( oEndNode ) ;
		oRange.setStartBefore( oStartNode ) ;
	}
	
	// Insert the replacement nodes
	oRange.deleteContents() ;
	oRange.insertNode( oFragment ) ;
}
*/
// END iCM Modifications

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产电影网| 国产呦精品一区二区三区网站| 2023国产精品自拍| 欧美高清dvd| 欧美日韩三级一区| 在线观看av一区二区| 欧洲精品视频在线观看| 欧美偷拍一区二区| 欧美三级蜜桃2在线观看| 欧美亚洲自拍偷拍| 3751色影院一区二区三区| 欧美精品久久久久久久多人混战 | 国产高清亚洲一区| 成人性视频免费网站| 成人国产精品免费网站| 成年人国产精品| 日本大香伊一区二区三区| 欧美性视频一区二区三区| 欧美日韩国产综合视频在线观看| 欧美日韩免费在线视频| 日韩欧美一区电影| 国产精品久线在线观看| 亚洲欧美电影一区二区| 亚洲乱码日产精品bd| 五月激情综合网| 国产一区二区毛片| 欧洲人成人精品| 精品国产第一区二区三区观看体验| 国产日韩亚洲欧美综合| 一区二区三区中文字幕| 爽好久久久欧美精品| 国产麻豆精品在线观看| 色伊人久久综合中文字幕| 欧美蜜桃一区二区三区| 久久久影视传媒| 亚洲电影激情视频网站| 国产又黄又大久久| 欧美综合天天夜夜久久| 精品国产伦理网| 一区二区在线观看免费视频播放| 蜜桃视频在线一区| 色一情一伦一子一伦一区| 精品久久久久香蕉网| 一区二区三区中文字幕电影| 久久99精品国产.久久久久| 99国产精品视频免费观看| 日韩一区二区高清| 一区二区三区 在线观看视频| 久久福利视频一区二区| 日本韩国精品一区二区在线观看| 精品粉嫩超白一线天av| 亚洲国产另类av| 99久久er热在这里只有精品66| 日韩欧美国产电影| 午夜精品久久一牛影视| www.久久久久久久久| 精品国产一区a| 日本最新不卡在线| 欧美亚洲综合久久| 一区二区三区在线免费视频| 国产99久久久国产精品潘金 | 91精品国产欧美一区二区| 中文字幕精品综合| 国产一区福利在线| 日韩西西人体444www| 天堂久久久久va久久久久| 99re成人精品视频| 中文一区二区在线观看| 日韩av中文在线观看| 欧美午夜宅男影院| 亚洲国产精品久久不卡毛片| 91香蕉视频在线| 亚洲视频一二区| 91麻豆免费看| 一区二区三区在线看| 一本色道**综合亚洲精品蜜桃冫| 亚洲欧洲日韩av| 99国产欧美另类久久久精品| 中文字幕亚洲一区二区av在线| 成人动漫一区二区在线| 国产精品午夜免费| 99re在线精品| 一区二区在线观看视频| 欧美日韩在线直播| 麻豆久久久久久| 欧美xxxxx裸体时装秀| 激情小说欧美图片| 欧美国产亚洲另类动漫| 成人网页在线观看| 亚洲女同一区二区| 欧美精品xxxxbbbb| 精品综合久久久久久8888| 久久精品视频一区| 91污在线观看| 午夜精品123| 久久综合五月天婷婷伊人| 国产精品一区二区在线看| 国产精品三级电影| 欧美午夜精品久久久久久超碰 | 精品一区二区免费看| 26uuu亚洲综合色欧美| 成人av网址在线观看| 亚洲国产你懂的| 久久五月婷婷丁香社区| www.av精品| 偷拍自拍另类欧美| 久久久久久毛片| 色久优优欧美色久优优| 日韩电影在线看| 中文字幕av一区二区三区| 欧美性感一类影片在线播放| 狠狠久久亚洲欧美| 亚洲一二三级电影| 精品国精品国产尤物美女| 色综合久久天天综合网| 激情国产一区二区| 亚洲一区二区三区四区在线免费观看| 欧美一级国产精品| av一区二区三区| 另类专区欧美蜜桃臀第一页| 中文字幕五月欧美| 久久日韩精品一区二区五区| 91麻豆高清视频| 国产成人免费高清| 日本午夜精品视频在线观看| 中文字幕不卡的av| 久久午夜老司机| 制服.丝袜.亚洲.另类.中文| 91网站最新网址| 国产精品亚洲午夜一区二区三区| 亚洲高清免费观看| 亚洲私人黄色宅男| 国产欧美日韩不卡免费| 欧美va在线播放| 欧美精品123区| 欧美色男人天堂| heyzo一本久久综合| 国产一区福利在线| 久久99精品久久久久久| 日韩影院在线观看| 午夜电影网一区| 亚洲国产成人高清精品| 亚洲免费观看高清在线观看| 国产蜜臀97一区二区三区| 精品少妇一区二区| 日韩精品最新网址| 日韩一区二区麻豆国产| 欧美日韩国产综合视频在线观看 | 欧美一区二区私人影院日本| 色狠狠色狠狠综合| 一本久道中文字幕精品亚洲嫩| 国产成人小视频| 国产成人免费视频一区| 国产成人免费视频网站高清观看视频| 国产麻豆午夜三级精品| 国产精品影视天天线| 国产麻豆视频一区二区| 国产成人在线色| av高清不卡在线| 色婷婷精品久久二区二区蜜臀av | 亚洲中国最大av网站| 一区二区三区成人| 亚洲自拍都市欧美小说| 亚洲综合激情另类小说区| 一区二区三区四区国产精品| 一区二区三区高清在线| 午夜精品一区二区三区电影天堂 | 久久综合精品国产一区二区三区 | 成人国产精品免费观看| 波多野结衣亚洲一区| 不卡一区二区三区四区| 99亚偷拍自图区亚洲| 欧美视频在线不卡| 欧美一区二区三区视频免费| 久久午夜电影网| 综合久久国产九一剧情麻豆| 一区二区三区国产| 久久电影网电视剧免费观看| 国产麻豆欧美日韩一区| 色综合欧美在线| 欧美电影免费观看高清完整版| 精品国产百合女同互慰| 一区免费观看视频| 久久久久久久久免费| 视频一区二区三区入口| 成人动漫一区二区| 国产欧美精品国产国产专区| 国产在线精品免费| 成人午夜电影网站| 不卡在线观看av| 欧美日韩精品一区二区| 久久久午夜电影| 亚洲高清久久久| 国产精品99久久久久久久女警 | 国产夫妻精品视频| 欧美中文字幕亚洲一区二区va在线| 欧美成人一区二区三区在线观看| 国产精品卡一卡二| 韩国女主播一区二区三区| 在线观看视频一区|