使用不同的参数初始化Object

时间:2011-11-10 06:31:55

标签: javascript

您好我有代码替换document.write,创建缓冲区而不是将缓冲区推送到文档中:

 var lazyLoad = (function () {

    var counter = 0
    var buffer = new Array()
    function work(options){ 
        window.d = document     
        var tmp_buffer
        d.write = d.writeln = function(s){  tmp_buffer += s}

        d.open = d.close = function(){}
        s = d.createElement('script') 
        s.setAttribute('type','text/javascript')
        s.setAttribute('src',options.url)
        d.getElementById(options.block).appendChild(s)

        s.onload = function () {
            buffer[counter] = tmp_buffer
            console.log(buffer[1])
            window.setTimeout(function() {
                d.getElementById(options.block).innerHTML += buffer[counter]            
            }, 0)
            counter++
       }
    }

    return {

            init: function (options) {

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

                $.extend(CONFIG, options)

                random = $('#'+CONFIG.block).attr('rel')
                id = $('#'+CONFIG.block).attr('id').replace(random,'')
                id = id.replace('DIV','')
                size = id.split('X')
                ele_width = size[0] || CONFIG.width
                ele_height = size[1] || CONFIG.height

                $('#'+CONFIG.block).css({
                                        'width':ele_width+'px',
                                        'height':ele_height+'px'
                                    })


                $(window).load(function(){
                    if(options.adfox) {
                        random = $('#'+CONFIG.block).attr('id')
                        AdFox_getCodeScript(1, random, CONFIG.url)
                    }else{
                        work(options)
                    }
                })
            }

    }


})();

如果我开始一次:

lazyLoad.init({
        'http://test.com/test.js',              
         div1
})

但如果我再次使用其他参数调用它:

lazyLoad.init({
        'http://test2.com/test.js',             
         div2
})

第一个init不会工作。 buffer将为空。我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

我认为

$(window).load(function(){  

将覆盖事件处理程序。尝试使用:

$(function(){ 

 });

代替。我认为它会添加一系列事件处理程序。我可能错了。请告诉我结果如何。

此外,它看起来不像你在本地范围内定义“s”。如果在定义变量时没有将“var”放在变量前面,它将在全局范围内创建。