fck_1_gecko.js
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:3k
源码类别:

OA系统

开发平台:

C#

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  4.  * 
  5.  * Licensed under the terms of the GNU Lesser General Public License:
  6.  *  http://www.opensource.org/licenses/lgpl-license.php
  7.  * 
  8.  * For further information visit:
  9.  *  http://www.fckeditor.net/
  10.  * 
  11.  * "Support Open Source software. What about a donation today?"
  12.  * 
  13.  * File Name: fck_1_gecko.js
  14.  *  This is the first part of the "FCK" object creation. This is the main
  15.  *  object that represents an editor instance.
  16.  *  (Gecko specific implementations)
  17.  * 
  18.  * File Authors:
  19.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  20.  */
  21. FCK.Description = "FCKeditor for Gecko Browsers" ;
  22. FCK.InitializeBehaviors = function()
  23. {
  24. // When calling "SetHTML", the editing area IFRAME gets a fixed height. So we must recaulculate it.
  25. Window_OnResize() ;
  26. FCKFocusManager.AddWindow( this.EditorWindow ) ;
  27. // Handle pasting operations.
  28. var oOnKeyDown = function( e )
  29. {
  30. var bPrevent ;
  31. if ( e.ctrlKey && !e.shiftKey && !e.altKey )
  32. {
  33. switch ( e.which ) 
  34. {
  35. case 66 : // B
  36. case 98 : // b
  37. FCK.ExecuteNamedCommand( 'bold' ) ; bPrevent = true ;
  38. break;
  39. case 105 : // i
  40. case 73 : // I
  41. FCK.ExecuteNamedCommand( 'italic' ) ; bPrevent = true ;
  42. break;
  43. case 117 : // u
  44. case 85 : // U
  45. FCK.ExecuteNamedCommand( 'underline' ) ; bPrevent = true ;
  46. break;
  47. case 86 : // V
  48. case 118 : // v
  49. bPrevent = ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( "OnPaste" ) ) ;
  50. break ;
  51. }
  52. }
  53. else if ( e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 45 ) // SHIFT + <INS>
  54. bPrevent = ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( "OnPaste" ) ) ;
  55. if ( bPrevent ) 
  56. {
  57. e.preventDefault() ;
  58. e.stopPropagation() ;
  59. }
  60. }
  61. this.EditorDocument.addEventListener( 'keypress', oOnKeyDown, true ) ;
  62. this.ExecOnSelectionChange = function()
  63. {
  64. FCK.Events.FireEvent( "OnSelectionChange" ) ;
  65. }
  66. this.ExecOnSelectionChangeTimer = function()
  67. {
  68. if ( FCK.LastOnChangeTimer )
  69. window.clearTimeout( FCK.LastOnChangeTimer ) ;
  70. FCK.LastOnChangeTimer = window.setTimeout( FCK.ExecOnSelectionChange, 100 ) ;
  71. }
  72. this.EditorDocument.addEventListener( 'mouseup', this.ExecOnSelectionChange, false ) ;
  73. // On Gecko, firing the "OnSelectionChange" event on every key press started to be too much
  74. // slow. So, a timer has been implemented to solve performance issues when tipying to quickly.
  75. this.EditorDocument.addEventListener( 'keyup', this.ExecOnSelectionChangeTimer, false ) ;
  76. this._DblClickListener = function( e )
  77. {
  78. FCK.OnDoubleClick( e.target ) ;
  79. e.stopPropagation() ;
  80. }
  81. this.EditorDocument.addEventListener( 'dblclick', this._DblClickListener, true ) ;
  82. // Reset the context menu.
  83. FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow( FCK.EditorWindow ) ;
  84. FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument ) ;
  85. }
  86. FCK.MakeEditable = function()
  87. {
  88. this.EditingArea.MakeEditable() ;
  89. }
  90. // Disable the context menu in the editor (outside the editing area).
  91. function Document_OnContextMenu( e )
  92. {
  93. if ( !e.target._FCKShowContextMenu )
  94. e.preventDefault() ;
  95. }
  96. document.oncontextmenu = Document_OnContextMenu ;