Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Помогите доработать скрипт lazyload javascript!


Автор: Kotakota 12.7.2011, 21:13
Привет.
Все никак не могу заставить функцию require, вызывать саму себя, чтобы она поглотила следующий файл для lazyload-загрузки из переменной file
Сделать пытаюсь с помощью arguments.callee (переменная loader).
Пишет ошибку: too much recursion
Код

var PROJECT=(function(){
    function require(config) {
        config.file = [].concat(config.file);
        config.callback = [].concat(config.callback);
        
        var
            cacheable = config.cacheable || false,
            path = config.path || '',
            file = path + config.file.shift(),
            loader = arguments.callee
                                
        
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.async = true;
            script.src = file;
            script.onload = callback();
            script.onreadystatechange = function () {
                if (this.readyState == 'complete' || this.readyState == 'loaded') {
            callback();
            }
                };
        
                
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(script, s);
    
    function callback() {

        while( config.callback.length ){
            config.callback.shift()();
                }

                
        } // function callback()
      loader(config) 
    } // function require()


        require(
        {
           file: [
                  'test.js',
                  'test2.js'                  
            ],
           callback: function(){
               alert('work!')
                },
          cacheable: true    
        });

})();


Еще ОЧЕНЬ хочется услышать советы, как можно доработать этот lazyload?!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)