fckfitwindow.js

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

JS
170
字号
/* * 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 == * * Stretch the editor to full window size and back. */var FCKFitWindow = function(){	this.Name = 'FitWindow' ;}FCKFitWindow.prototype.Execute = function(){	var eEditorFrame		= window.frameElement ;	var eEditorFrameStyle	= eEditorFrame.style ;	var eMainWindow			= parent ;	var eDocEl				= eMainWindow.document.documentElement ;	var eBody				= eMainWindow.document.body ;	var eBodyStyle			= eBody.style ;	var eParent ;	// No original style properties known? Go fullscreen.	if ( !this.IsMaximized )	{		// Registering an event handler when the window gets resized.		if( FCKBrowserInfo.IsIE )			eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;		else			eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;		// Save the scrollbars position.		this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;		// Save and reset the styles for the entire node tree. They could interfere in the result.		eParent = eEditorFrame ;		// The extra () is to avoid a warning with strict error checking. This is ok.		while( (eParent = eParent.parentNode) )		{			if ( eParent.nodeType == 1 )				eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;		}		// Hide IE scrollbars (in strict mode).		if ( FCKBrowserInfo.IsIE )		{			this.documentElementOverflow = eDocEl.style.overflow ;			eDocEl.style.overflow	= 'hidden' ;			eBodyStyle.overflow		= 'hidden' ;		}		else		{			// Hide the scroolbars in Firefox.			eBodyStyle.overflow = 'hidden' ;			eBodyStyle.width = '0px' ;			eBodyStyle.height = '0px' ;		}		// Save the IFRAME styles.		this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;		// Resize.		var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;		eEditorFrameStyle.position	= "absolute";		eEditorFrameStyle.zIndex	= FCKConfig.FloatingPanelsZIndex - 1;		eEditorFrameStyle.left		= "0px";		eEditorFrameStyle.top		= "0px";		eEditorFrameStyle.width		= oViewPaneSize.Width + "px";		eEditorFrameStyle.height	= oViewPaneSize.Height + "px";		// Giving the frame some (huge) borders on his right and bottom		// side to hide the background that would otherwise show when the		// editor is in fullsize mode and the window is increased in size		// not for IE, because IE immediately adapts the editor on resize,		// without showing any of the background oddly in firefox, the		// editor seems not to fill the whole frame, so just setting the		// background of it to white to cover the page laying behind it anyway.		if ( !FCKBrowserInfo.IsIE )		{			eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;			eEditorFrameStyle.backgroundColor		= "white";		}		// Scroll to top left.		eMainWindow.scrollTo(0, 0);		this.IsMaximized = true ;	}	else	// Resize to original size.	{		// Remove the event handler of window resizing.		if( FCKBrowserInfo.IsIE )			eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;		else			eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;		// Restore the CSS position for the entire node tree.		eParent = eEditorFrame ;		// The extra () is to avoid a warning with strict error checking. This is ok.		while( (eParent = eParent.parentNode) )		{			if ( eParent._fckSavedStyles )			{				FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;				eParent._fckSavedStyles = null ;			}		}		// Restore IE scrollbars		if ( FCKBrowserInfo.IsIE )			eDocEl.style.overflow = this.documentElementOverflow ;		// Restore original size		FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;		// Restore the window scroll position.		eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;		this.IsMaximized = false ;	}	FCKToolbarItems.GetItem('FitWindow').RefreshState() ;	// It seams that Firefox restarts the editing area when making this changes.	// On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special	//configuration, like DisableFFTableHandles and DisableObjectResizing get	//lost, so we must reset it. Also, the cursor position and selection are	//also lost, even if you comment the following line (MakeEditable).	// if ( FCKBrowserInfo.IsGecko10 )	// Initially I thought it was a FF 1.0 only problem.	FCK.EditingArea.MakeEditable() ;	FCK.Focus() ;}FCKFitWindow.prototype.GetState = function(){	if ( FCKConfig.ToolbarLocation != 'In' )		return FCK_TRISTATE_DISABLED ;	else		return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );}function FCKFitWindow_Resize(){	var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;	var eEditorFrameStyle = window.frameElement.style ;	eEditorFrameStyle.width		= oViewPaneSize.Width + 'px' ;	eEditorFrameStyle.height	= oViewPaneSize.Height + 'px' ;}

⌨️ 快捷键说明

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