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

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: fckscriptloader.js
  12.  *  Defines the FCKScriptLoader object that is used to dynamically load
  13.  *  scripts in the editor.
  14.  * 
  15.  * File Authors:
  16.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  17.  */
  18. // This object is used to download scripts and css files sequentialy.
  19. // A file download is not started until the previous file was not completelly
  20. // downloaded.
  21. var FCKScriptLoader = new Object() ;
  22. FCKScriptLoader.IsLoading = false ;
  23. FCKScriptLoader.Queue = new Array() ;
  24. // Adds a script or css to the queue.
  25. FCKScriptLoader.AddScript = function( scriptPath )
  26. {
  27. FCKScriptLoader.Queue[ FCKScriptLoader.Queue.length ] = scriptPath ;
  28. if ( !this.IsLoading )
  29. this.CheckQueue() ;
  30. }
  31. // Checks the queue to see if there is something to load.
  32. // This function should not be called by code. It's a internal function
  33. // that's called recursively.
  34. FCKScriptLoader.CheckQueue = function() 
  35. {
  36. // Check if the queue is not empty.
  37. if ( this.Queue.length > 0 )
  38. {
  39. this.IsLoading = true ;
  40. // Get the first item in the queue
  41. var sScriptPath = this.Queue[0] ;
  42. // Removes the first item from the queue
  43. var oTempArray = new Array() ;
  44. for ( i = 1 ; i < this.Queue.length ; i++ )
  45. oTempArray[ i - 1 ] = this.Queue[ i ] ;
  46. this.Queue = oTempArray ;
  47. this.LoadFile( sScriptPath ) ;
  48. }
  49. else
  50. {
  51. this.IsLoading = false ;
  52. // Call the "OnEmpty" event.
  53. if ( this.OnEmpty ) 
  54. this.OnEmpty() ;
  55. }
  56. }
  57. if ( FCKBrowserInfo.IsSafari )
  58. {
  59. FCKScriptLoader.LoadFile = function( filePath ) 
  60. {
  61. if ( filePath.lastIndexOf( '.css' ) > 0 )
  62. {
  63. this.CheckQueue() ;
  64. return ;
  65. }
  66. var oXmlRequest = new XMLHttpRequest() ;
  67. // Load the script synchronously.
  68. oXmlRequest.open( "GET", filePath, false ) ;
  69. oXmlRequest.send( null ) ;
  70. // Evaluate the script.
  71. if ( oXmlRequest.status == 200 )
  72. {
  73. try
  74. {
  75. eval( oXmlRequest.responseText ) ;
  76. }
  77. catch ( e )
  78. {
  79. alert( 'Error parsing ' + filePath + ': ' + e.message ) ;
  80. }
  81. }
  82. else
  83. alert( 'Error loading ' + filePath ) ;
  84. this.CheckQueue() ;
  85. }
  86. }
  87. else
  88. {
  89. FCKScriptLoader.LoadFile = function( filePath ) 
  90. {
  91. //window.status = ( 'Loading ' + filePath + '...' ) ;
  92. // Dynamically load the file (it can be a CSS or a JS)
  93. var e ;
  94. // If is a CSS
  95. if ( filePath.lastIndexOf( '.css' ) > 0 )
  96. {
  97. e = document.createElement( 'LINK' ) ;
  98. e.rel = 'stylesheet' ;
  99. e.type = 'text/css' ;
  100. }
  101. // It is a JS
  102. else
  103. {
  104. e = document.createElement( "script" ) ;
  105. e.type = "text/javascript" ;
  106. }
  107. // Add the new object to the HEAD.
  108. document.getElementsByTagName("head")[0].appendChild( e ) ; 
  109. // Start downloading it.
  110. if ( e.tagName == 'LINK' )
  111. {
  112. // IE must wait for the file to be downloaded.
  113. if ( FCKBrowserInfo.IsIE )
  114. e.onload = FCKScriptLoader_OnLoad ;
  115. // Gecko doens't fire any event when the CSS is loaded, so we 
  116. // can't wait for it.
  117. else
  118. FCKScriptLoader.CheckQueue() ;
  119. e.href = filePath ;
  120. }
  121. else
  122. {
  123. // Gecko fires the "onload" event and IE fires "onreadystatechange"
  124. e.onload = e.onreadystatechange = FCKScriptLoader_OnLoad ;
  125. e.src = filePath ;
  126. }
  127. }
  128. function FCKScriptLoader_OnLoad()
  129. {
  130. // Gecko doesn't have a "readyState" property
  131. if ( this.tagName == 'LINK' || !this.readyState || this.readyState == 'loaded' )
  132. // Load the next script available in the queue
  133. FCKScriptLoader.CheckQueue() ;
  134. }
  135. }