2011-11-08 67 views
1

你好,我有代碼代替document.write,使緩衝區和比推緩衝區到文檔:重新定義變量

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() 
       } 
      } 

    } 

})(); 

如果我初始化它一次:

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

但是,如果我再次調用它與其他參數:

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

第一init不會工作。 buffer將爲空。我的錯誤在哪裏?

回答

3

通過調用$.extend(CONFIG, options),您將使用新配置替換之前的配置。

相反,你應該創建一個數組,每個options追加到它。

+0

我有'緩衝區'的問題。第一次初始化後它是空的,但在第二次之後它有一些代碼。我認爲'$ .extend'不能代替我的緩衝區。 – rsboarder