fcktools_gecko.js

来自「国外很不错的一个开源OA系统Group-Office」· JavaScript 代码 · 共 235 行

JS
235
字号
/* * FCKeditor - The text editor for Internet - http://www.fckeditor.net * Copyright (C) 2003-2007 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. (Gecko version). */FCKTools.CancelEvent = function( e ){	if ( e )		e.preventDefault() ;}FCKTools.DisableSelection = function( element ){	if ( FCKBrowserInfo.IsGecko )		element.style.MozUserSelect	= 'none' ;	// Gecko only.	else		element.style.userSelect	= 'none' ;	// CSS3 (not supported yet).}// 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 ;}// Replaces a tag with its contents. For example "<span>My <b>tag</b></span>"// will be replaced with "My <b>tag</b>".FCKTools.RemoveOuterTags = function( e ){	var oFragment = e.ownerDocument.createDocumentFragment() ;	for ( var i = 0 ; i < e.childNodes.length ; i++ )		oFragment.appendChild( e.childNodes[i].cloneNode(true) ) ;	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.GetScrollPosition = function( relativeWindow ){	return { X : relativeWindow.pageXOffset, Y : relativeWindow.pageYOffset } ;}FCKTools.AddEventListener = function( sourceObject, eventName, listener ){	sourceObject.addEventListener( eventName, listener, false ) ;}FCKTools.RemoveEventListener = function( sourceObject, eventName, listener ){	sourceObject.removeEventListener( eventName, listener, false ) ;}// Listeners attached with this function cannot be detached.FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray ){	sourceObject.addEventListener(		eventName,		function( e )		{			listener.apply( sourceObject, [ e ].concat( paramsArray || [] ) ) ;		},		false	) ;}// Returns and object with the "Width" and "Height" properties.FCKTools.GetViewPaneSize = function( win ){	return { Width : win.innerWidth, Height : win.innerHeight } ;}FCKTools.SaveStyles = function( element ){	var oSavedStyles = new Object() ;	if ( element.className.length > 0 )	{		oSavedStyles.Class = element.className ;		element.className = '' ;	}	var sInlineStyle = element.getAttribute( 'style' ) ;	if ( sInlineStyle && sInlineStyle.length > 0 )	{		oSavedStyles.Inline = sInlineStyle ;		element.setAttribute( 'style', '', 0 ) ;	// 0 : Case Insensitive	}	return oSavedStyles ;}FCKTools.RestoreStyles = function( element, savedStyles ){	element.className = savedStyles.Class || '' ;	if ( savedStyles.Inline )		element.setAttribute( 'style', savedStyles.Inline, 0 ) ;	// 0 : Case Insensitive	else		element.removeAttribute( 'style', 0 ) ;}FCKTools.RegisterDollarFunction = function( targetWindow ){	targetWindow.$ = function( id )	{		return this.document.getElementById( id ) ;	} ;}FCKTools.AppendElement = function( target, elementName ){	return target.appendChild( target.ownerDocument.createElement( elementName ) ) ;}// Get the coordinates of an element.//		@el : The element to get the position.//		@relativeWindow: The window to which we want the coordinates relative to.FCKTools.GetElementPosition = function( el, relativeWindow ){	// Initializes the Coordinates object that will be returned by the function.	var c = { X:0, Y:0 } ;	var oWindow = relativeWindow || window ;	var oOwnerWindow = FCKTools.GetElementWindow( el ) ;	// Loop throw the offset chain.	while ( el )	{		var sPosition = oOwnerWindow.getComputedStyle(el, '').position ;		// Check for non "static" elements.		// 'FCKConfig.FloatingPanelsZIndex' -- Submenus are under a positioned IFRAME.		if ( sPosition && sPosition != 'static' && el.style.zIndex != FCKConfig.FloatingPanelsZIndex )			break ;		c.X += el.offsetLeft - el.scrollLeft ;		c.Y += el.offsetTop - el.scrollTop  ;		if ( el.offsetParent )			el = el.offsetParent ;		else		{			if ( oOwnerWindow != oWindow )			{				el = oOwnerWindow.frameElement ;				if ( el )					oOwnerWindow = FCKTools.GetElementWindow( el ) ;			}			else			{				c.X += el.scrollLeft ;				c.Y += el.scrollTop  ;				break ;			}		}	}	// Return the Coordinates object	return c ;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?