Redefiniendo variable

Hola, tengo un código que reemplaza document.write, crea un búfer y luego inserta el búfer en el documento:

var lazyLoad = (function () {

    var CONFIG = {
        block: '',
        url: ''
    };

    function work(){
        buffer = ''
        d.write = d.writeln = function(s){ 
                                    buffer += s
                                }
        d.open = d.close = function(){}
        s = d.createElement('script');       
        s.setAttribute('type','text/javascript');
        s.setAttribute('src',CONFIG.url);
        d.getElementById(CONFIG.block).appendChild(s)
        s.onload = function () {
            window.setTimeout(function() {

                console.warn(CONFIG.block + ' ' + buffer)
                d.getElementById(CONFIG.block).innerHTML += buffer;
                buffer = '';
            }, 0);
       }
    }

    return {
            init: function (options) {
                $.extend(CONFIG, options);

                window.d = document
                window.onload = function(){
                    work()
                }
            }

    }

})();

Si lo inicio una vez:

lazyLoad.init({
            url: 'http://test1.com/test1.js',
            block: DIVID1
        })

Pero si lo vuelvo a llamar con otros parámetros:

lazyLoad.init({
                url: 'http://test2.com/test2.js',
                block: DIVID2
            })

El primer inicio no funcionará. buffer estará vacío. ¿Dónde está mi error?

preguntado el 08 de noviembre de 11 a las 13:11

1 Respuestas

Llamando $.extend(CONFIG, options), you're replacing the previous config with the new one.

Instead, you should create an array and append each options a la misma.

respondido 08 nov., 11:17

I have problems with buffer. After first init it is empty, but after second it has some code. I think $.extend doesn't replace my buffer. - rsboarder

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.