fckeditorapi.js
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:5k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

ASP/ASPX

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2009 Frederico Caldeira Knabben
  4.  *
  5.  * == BEGIN LICENSE ==
  6.  *
  7.  * Licensed under the terms of any of the following licenses at your
  8.  * choice:
  9.  *
  10.  *  - GNU General Public License Version 2 or later (the "GPL")
  11.  *    http://www.gnu.org/licenses/gpl.html
  12.  *
  13.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  14.  *    http://www.gnu.org/licenses/lgpl.html
  15.  *
  16.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  17.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  18.  *
  19.  * == END LICENSE ==
  20.  *
  21.  * Create the FCKeditorAPI object that is available as a global object in
  22.  * the page where the editor is placed in.
  23.  */
  24. var FCKeditorAPI ;
  25. function InitializeAPI()
  26. {
  27. var oParentWindow = window.parent ;
  28. if ( !( FCKeditorAPI = oParentWindow.FCKeditorAPI ) )
  29. {
  30. // Make the FCKeditorAPI object available in the parent window. Use
  31. // eval so this core runs in the parent's scope and so it will still be
  32. // available if the editor instance is removed ("Can't execute code
  33. // from a freed script" error).
  34. // Note: we check the existence of oEditor.GetParentForm because some external
  35. // code (like JSON) can extend the Object prototype and we get then extra oEditor
  36. // objects that aren't really FCKeditor instances.
  37. var sScript =
  38. 'window.FCKeditorAPI = {' +
  39. 'Version : "2.6.4",' +
  40. 'VersionBuild : "21629",' +
  41. 'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +
  42. 'GetInstance : function( name )' +
  43. '{' +
  44. 'return this.Instances[ name ];' +
  45. '},' +
  46. '_FormSubmit : function()' +
  47. '{' +
  48. 'for ( var name in FCKeditorAPI.Instances )' +
  49. '{' +
  50. 'var oEditor = FCKeditorAPI.Instances[ name ] ;' +
  51. 'if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )' +
  52. 'oEditor.UpdateLinkedField() ;' +
  53. '}' +
  54. 'this._FCKOriginalSubmit() ;' +
  55. '},' +
  56. '_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {' +
  57. 'Functions : new Array(),' +
  58. 'IsRunning : false,' +
  59. 'Add : function( f )' +
  60. '{' +
  61. 'this.Functions.push( f );' +
  62. 'if ( !this.IsRunning )' +
  63. 'this.StartNext();' +
  64. '},' +
  65. 'StartNext : function()' +
  66. '{' +
  67. 'var aQueue = this.Functions ;' +
  68. 'if ( aQueue.length > 0 )' +
  69. '{' +
  70. 'this.IsRunning = true;' +
  71. 'aQueue[0].call();' +
  72. '}' +
  73. 'else ' +
  74. 'this.IsRunning = false;' +
  75. '},' +
  76. 'Remove : function( f )' +
  77. '{' +
  78. 'var aQueue = this.Functions;' +
  79. 'var i = 0, fFunc;' +
  80. 'while( (fFunc = aQueue[ i ]) )' +
  81. '{' +
  82. 'if ( fFunc == f )' +
  83. 'aQueue.splice( i,1 );' +
  84. 'i++ ;' +
  85. '}' +
  86. 'this.StartNext();' +
  87. '}' +
  88. '}' +
  89. '}' ;
  90. // In IE, the "eval" function is not always available (it works with
  91. // the JavaScript samples, but not with the ASP ones, for example).
  92. // So, let's use the execScript instead.
  93. if ( oParentWindow.execScript )
  94. oParentWindow.execScript( sScript, 'JavaScript' ) ;
  95. else
  96. {
  97. if ( FCKBrowserInfo.IsGecko10 )
  98. {
  99. // FF 1.0.4 gives an error with the request bellow. The
  100. // following seams to work well.
  101. eval.call( oParentWindow, sScript ) ;
  102. }
  103. else if( FCKBrowserInfo.IsAIR )
  104. {
  105. FCKAdobeAIR.FCKeditorAPI_Evaluate( oParentWindow, sScript ) ;
  106. }
  107. else if ( FCKBrowserInfo.IsSafari )
  108. {
  109. // oParentWindow.eval in Safari executes in the calling window
  110. // environment, instead of the parent one. The following should
  111. // make it work.
  112. var oParentDocument = oParentWindow.document ;
  113. var eScript = oParentDocument.createElement('script') ;
  114. eScript.appendChild( oParentDocument.createTextNode( sScript ) ) ;
  115. oParentDocument.documentElement.appendChild( eScript ) ;
  116. }
  117. else
  118. oParentWindow.eval( sScript ) ;
  119. }
  120. FCKeditorAPI = oParentWindow.FCKeditorAPI ;
  121. // The __Instances properly has been changed to the public Instances,
  122. // but we should still have the "deprecated" version of it.
  123. FCKeditorAPI.__Instances = FCKeditorAPI.Instances ;
  124. }
  125. // Add the current instance to the FCKeditorAPI's instances collection.
  126. FCKeditorAPI.Instances[ FCK.Name ] = FCK ;
  127. }
  128. // Attach to the form onsubmit event and to the form.submit().
  129. function _AttachFormSubmitToAPI()
  130. {
  131. // Get the linked field form.
  132. var oForm = FCK.GetParentForm() ;
  133. if ( oForm )
  134. {
  135. // Attach to the onsubmit event.
  136. FCKTools.AddEventListener( oForm, 'submit', FCK.UpdateLinkedField ) ;
  137. // IE sees oForm.submit function as an 'object'.
  138. if ( !oForm._FCKOriginalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )
  139. {
  140. // Save the original submit.
  141. oForm._FCKOriginalSubmit = oForm.submit ;
  142. // Create our replacement for the submit.
  143. oForm.submit = FCKeditorAPI._FormSubmit ;
  144. }
  145. }
  146. }
  147. function FCKeditorAPI_Cleanup()
  148. {
  149. if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat
  150. && !window.FCKUnloadFlag )
  151. return ;
  152. delete FCKeditorAPI.Instances[ FCK.Name ] ;
  153. }
  154. function FCKeditorAPI_ConfirmCleanup()
  155. {
  156. if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat )
  157. window.FCKUnloadFlag = true ;
  158. }
  159. FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;
  160. FCKTools.AddEventListener( window, 'beforeunload', FCKeditorAPI_ConfirmCleanup) ;