fck_2_gecko.js
上传用户:wlfwy2004
上传日期:2016-12-12
资源大小:33978k
文件大小:5k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2005 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.  * File Name: fck_2_gecko.js
  12.  *  This is the second part of the "FCK" object creation. This is the main
  13.  *  object that represents an editor instance.
  14.  *  (Gecko specific implementations)
  15.  * 
  16.  * File Authors:
  17.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  18.  */
  19. // GetNamedCommandState overload for Gecko.
  20. FCK._BaseGetNamedCommandState = FCK.GetNamedCommandState ;
  21. FCK.GetNamedCommandState = function( commandName )
  22. {
  23. switch ( commandName )
  24. {
  25. case 'Unlink' :
  26. return FCKSelection.HasAncestorNode('A') ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
  27. default :
  28. return FCK._BaseGetNamedCommandState( commandName ) ;
  29. }
  30. }
  31. // Named commands to be handled by this browsers specific implementation.
  32. FCK.RedirectNamedCommands = 
  33. {
  34. Print : true,
  35. Paste : true,
  36. Cut : true,
  37. Copy : true 
  38. }
  39. // ExecuteNamedCommand overload for Gecko.
  40. FCK.ExecuteRedirectedNamedCommand = function( commandName, commandParameter )
  41. {
  42. switch ( commandName )
  43. {
  44. case 'Print' :
  45. FCK.EditorWindow.print() ;
  46. break ;
  47. case 'Paste' :
  48. try { if ( FCK.Paste() ) FCK._BaseExecuteNamedCommand( 'Paste' ) ; }
  49. catch (e) { alert( FCKLang.PasteErrorPaste ) ; }
  50. break ;
  51. case 'Cut' :
  52. try { FCK._BaseExecuteNamedCommand( 'Cut' ) ; }
  53. catch (e) { alert( FCKLang.PasteErrorCut ) ; }
  54. break ;
  55. case 'Copy' :
  56. try { FCK._BaseExecuteNamedCommand( 'Copy' ) ; }
  57. catch (e) { alert( FCKLang.PasteErrorCopy ) ; }
  58. break ;
  59. default :
  60. FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
  61. }
  62. }
  63. FCK.AttachToOnSelectionChange = function( functionPointer )
  64. {
  65. this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
  66. }
  67. FCK.Paste = function()
  68. {
  69. if ( FCKConfig.ForcePasteAsPlainText )
  70. {
  71. FCK.PasteAsPlainText() ;
  72. return false ;
  73. }
  74. else if ( FCKConfig.AutoDetectPasteFromWord )
  75. {
  76. var sHTML = FCK.GetClipboardHTML() ;
  77. var re = /<w[^>]* class="?MsoNormal"?/gi ;
  78. if ( re.test( sHTML ) )
  79. {
  80. if ( confirm( FCKLang["PasteWordConfirm"] ) )
  81. {
  82. FCK.PasteFromWord() ;
  83. return false ;
  84. }
  85. }
  86. }
  87. else
  88. return true ;
  89. }
  90. //**
  91. // FCK.InsertHtml: Inserts HTML at the current cursor location. Deletes the
  92. // selected content if any.
  93. FCK.InsertHtml = function( html )
  94. {
  95. // Delete the actual selection.
  96. var oSel = FCKSelection.Delete() ;
  97. // var oContainer = oSel.getRangeAt(0).startContainer ;
  98. // var iOffSet = oSel.getRangeAt(0).startOffset ;
  99. // Get the first available range.
  100. var oRange = oSel.getRangeAt(0) ;
  101. // var oRange = this.EditorDocument.createRange() ;
  102. // oRange.setStart( oContainer, iOffSet ) ;
  103. // oRange.setEnd( oContainer, iOffSet ) ;
  104. // Create a fragment with the input HTML.
  105. var oFragment = oRange.createContextualFragment( html ) ;
  106. // Get the last available node.
  107. var oLastNode = oFragment.lastChild ;
  108. // Insert the fragment in the range.
  109. oRange.insertNode(oFragment) ;
  110. // Set the cursor after the inserted fragment.
  111. oRange.setEndAfter( oLastNode ) ;
  112. oRange.setStartAfter( oLastNode ) ;
  113. oSel.removeAllRanges() ;
  114. oSel = FCK.EditorWindow.getSelection() ;
  115. oSel.addRange( oRange ) ;
  116. this.Focus() ;
  117. }
  118. FCK.InsertElement = function( element )
  119. {
  120. // Deletes the actual selection.
  121. var oSel = FCKSelection.Delete() ;
  122. // Gets the first available range.
  123. var oRange = oSel.getRangeAt(0) ;
  124. // Inserts the element in the range.
  125. oRange.insertNode( element ) ;
  126. // Set the cursor after the inserted fragment.
  127. oRange.setEndAfter( element ) ;
  128. oRange.setStartAfter( element ) ;
  129. this.Focus() ;
  130. }
  131. FCK.PasteAsPlainText = function()
  132. {
  133. // TODO: Implement the "Paste as Plain Text" code.
  134. FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText' ) ;
  135. /*
  136. var sText = FCKTools.HTMLEncode( clipboardData.getData("Text") ) ;
  137. sText = sText.replace( /n/g, '<BR>' ) ;
  138. this.InsertHtml( sText ) ;
  139. */
  140. }
  141. /*
  142. FCK.PasteFromWord = function()
  143. {
  144. // TODO: Implement the "Paste as Plain Text" code.
  145. FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
  146. // FCK.CleanAndPaste( FCK.GetClipboardHTML() ) ;
  147. }
  148. */
  149. FCK.GetClipboardHTML = function()
  150. {
  151. return '' ;
  152. }
  153. FCK.CreateLink = function( url )
  154. {
  155. FCK.ExecuteNamedCommand( 'Unlink' ) ;
  156. if ( url.length > 0 )
  157. {
  158. // Generate a temporary name for the link.
  159. var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
  160. // Use the internal "CreateLink" command to create the link.
  161. FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl ) ;
  162. // Retrieve the just created link using XPath.
  163. var oLink = document.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, 9, null).singleNodeValue ;
  164. if ( oLink )
  165. {
  166. oLink.href = url ;
  167. return oLink ;
  168. }
  169. }
  170. }