Index: /FCKeditor/trunk/_test/manual/fckimagepreloader/test1.html
===================================================================
--- /FCKeditor/trunk/_test/manual/fckimagepreloader/test1.html (revision 66)
+++ /FCKeditor/trunk/_test/manual/fckimagepreloader/test1.html (revision 66)
@@ -0,0 +1,60 @@
+
+
+
+ FCKScriptLoader
+
+
+
+
+
+
+ FCKScriptLoader
+
+
+ Cleanup your browser cache. Load this page and watch the communications using Fiddler.
+ You must have just one HTTP 200 response for "strip.gif", "check.gif", "smiley.gif"
+ and "arrowdown.gif". All other responses for those files must be HTTP 304 (browser
+ cache), if any.
+
+
+ This is a IE only issue. Other browser will perform well whithout FCKScriptLoader.
+
+
+
Index: /FCKeditor/trunk/editor/_packager.xml
===================================================================
--- /FCKeditor/trunk/editor/_packager.xml (revision 65)
+++ /FCKeditor/trunk/editor/_packager.xml (revision 66)
@@ -40,4 +40,5 @@
+
@@ -125,4 +126,5 @@
+
Index: /FCKeditor/trunk/editor/_source/classes/fckimagepreloader.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckimagepreloader.js (revision 66)
+++ /FCKeditor/trunk/editor/_source/classes/fckimagepreloader.js (revision 66)
@@ -0,0 +1,45 @@
+var FCKImagePreloader = function()
+{
+ this._Images = new Array() ;
+}
+
+FCKImagePreloader.prototype =
+{
+ AddImages : function( images )
+ {
+ if ( typeof( images ) == 'string' )
+ images = images.split( ';' ) ;
+
+ this._Images = this._Images.concat( images ) ;
+ },
+
+ Start : function()
+ {
+ var aImages = this._Images ;
+ this._PreloadCount = aImages.length ;
+
+ for ( var i = 0 ; i < aImages.length ; i++ )
+ {
+ var eImg = document.createElement( 'img' ) ;
+ eImg.onload = eImg.onerror = _FCKImagePreloader_OnImage ;
+ eImg._FCKImagePreloader = this ;
+ eImg.src = aImages[i] ;
+
+ _FCKImagePreloader_ImageCache.push( eImg ) ;
+ }
+ }
+};
+
+// All preloaded images must be placed in a global array, otherwise the preload
+// magic will not happen.
+var _FCKImagePreloader_ImageCache = new Array() ;
+
+function _FCKImagePreloader_OnImage()
+{
+ var oImagePreloader = this._FCKImagePreloader ;
+
+ if ( (--oImagePreloader._PreloadCount) == 0 && oImagePreloader.OnComplete )
+ oImagePreloader.OnComplete() ;
+
+ this._FCKImagePreloader = null ;
+}
Index: /FCKeditor/trunk/editor/_source/fckscriptloader.js
===================================================================
--- /FCKeditor/trunk/editor/_source/fckscriptloader.js (revision 65)
+++ /FCKeditor/trunk/editor/_source/fckscriptloader.js (revision 66)
@@ -77,4 +77,5 @@
FCKScriptLoader.AddScript( 'FCKConstants' ) ;
FCKScriptLoader.AddScript( 'FCKJSCoreExtensions' ) ;
+FCKScriptLoader.AddScript( 'FCKImagePreloader' , 'classes/' ) ;
FCKScriptLoader.AddScript( 'FCKBrowserInfo' , 'internals/' , ['FCKJSCoreExtensions'] ) ;
FCKScriptLoader.AddScript( 'FCKConfig' , 'internals/' ) ;
@@ -89,4 +90,3 @@
FCKScriptLoader.AddScript( 'FCKListHandler' , 'internals/' , ['FCKJSCoreExtensions','FCKDomTools','FCKTools'], FCK_GENERIC ) ;
FCKScriptLoader.AddScript( 'FCKW3CRange' , 'classes/' , ['FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC ) ;
-
// ####################################
Index: /FCKeditor/trunk/editor/_source/internals/fck_1_ie.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck_1_ie.js (revision 65)
+++ /FCKeditor/trunk/editor/_source/internals/fck_1_ie.js (revision 66)
@@ -160,36 +160,16 @@
}
-var FCK_PreloadImages_Count = 0 ;
-var FCK_PreloadImages_Images = new Array() ;
-
function FCK_PreloadImages()
{
- // Get the images to preload.
- var aImages = FCKConfig.PreloadImages || [] ;
+ var oPreloader = new FCKImagePreloader() ;
- if ( typeof( aImages ) == 'string' )
- aImages = aImages.split( ';' ) ;
+ // Add the configured images.
+ oPreloader.AddImages( FCKConfig.PreloadImages ) ;
// Add the skin icons strip.
- aImages.push( FCKConfig.SkinPath + 'fck_strip.gif' ) ;
-
- FCK_PreloadImages_Count = aImages.length ;
+ oPreloader.AddImages( FCKConfig.SkinPath + 'fck_strip.gif' ) ;
- var aImageElements = new Array() ;
-
- for ( var i = 0 ; i < aImages.length ; i++ )
- {
- var eImg = document.createElement( 'img' ) ;
- eImg.onload = eImg.onerror = FCK_PreloadImages_OnImage ;
- eImg.src = aImages[i] ;
-
- FCK_PreloadImages_Images[i] = eImg ;
- }
-}
-
-function FCK_PreloadImages_OnImage()
-{
- if ( (--FCK_PreloadImages_Count) == 0 )
- FCKTools.RunFunction( LoadToolbarSetup ) ;
+ oPreloader.OnComplete = LoadToolbarSetup ;
+ oPreloader.Start() ;
}
Index: /FCKeditor/trunk/editor/fckeditor.html
===================================================================
--- /FCKeditor/trunk/editor/fckeditor.html (revision 65)
+++ /FCKeditor/trunk/editor/fckeditor.html (revision 66)
@@ -55,4 +55,5 @@
LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
LoadScript( '_source/fckeditorapi.js' ) ;
+LoadScript( '_source/classes/fckimagepreloader.js' ) ;
LoadScript( '_source/internals/fckregexlib.js' ) ;
LoadScript( '_source/internals/fcklanguagemanager.js' ) ;