Show
Ignore:
Timestamp:
09/23/07 20:48:05 (16 months ago)
Author:
holidays-l
Message:

lang/javascript/misc/loader.js.inc: Fixed something.
lang/javascript/misc/loader-min.js.inc: Fixed something.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/misc/loader.js.inc

    r245 r264  
    11(function(entries) { 
    2     function isString(obj) { 
    3         return (typeof obj == 'string' || obj instanceof String); 
     2    function defined(prop) { 
     3        try{ 
     4            return eval('typeof ' + prop) != "undefined"; 
     5        } catch(e) { 
     6        } 
     7        return false; 
    48    } 
    59 
    6     function hasLoaded(prop) { 
    7         try{ 
    8             return eval(prop + '.toString'); 
    9         } catch(e) { 
    10         } 
    11     } 
    12  
    13     function load(src) { 
     10    function loadScript(src) { 
    1411        var script = document.createElement('script'); 
    1512        script.type = 'text/javascript'; 
    16         script.charset = 'UTF-8'; 
    1713        script.src = src; 
    1814        (document.body || document.documentElement).appendChild(script); 
     
    2016 
    2117    var onComplete; 
    22     (function doEntry() { 
     18    (function doNextEntry() { 
    2319        var entry = entries.shift(); 
    2420        if (!entry) { 
    25             if (onComplete) { 
    26                 onComplete(); 
    27             } 
    28             return; 
     21            return onComplete && onComplete(); 
    2922        } 
    3023 
    31         if (isString(entry)) { 
    32             load(entry); 
    33             doEntry(); 
    34             return; 
     24        if (typeof entry == 'string' || entry instanceof String) { 
     25            entry = {'window':entry}; 
    3526        } 
    36  
    3727        for (var prop in entry) { 
    38             if (!hasLoaded(prop)) { 
    39                 load(entry[prop]); 
     28            if (prop == 'window' || !defined(prop)) { 
     29                loadScript(entry[prop]); 
    4030            } 
    4131        } 
    4232        var timer = setInterval(function() { 
    4333            for (var prop in entry) { 
    44                 if (!hasLoaded(prop)) { 
     34                if (!defined(prop)) { 
    4535                    return; 
    4636                } 
    4737            } 
    4838            clearInterval(timer); 
    49             doEntry(); 
     39            doNextEntry(); 
    5040        }, 99); 
    5141    })(); 
     
    5545            var args = arguments; 
    5646            onComplete = function() { 
    57                 callback.apply(null, args); 
     47                callback.apply(callback, args); 
    5848            }; 
    5949        }