0
你好,我有代碼代替document.write
,使緩衝區和比推緩衝區到文檔:調用對象不止一次
var lazyLoad = {
url: '',
block: '',
buffer: '',
init: function(url,block){
that = this
that.url = url;
that.block = block;
console.info(this.block)
console.log(this.url)
window.d = document
window.onload = function(){
that.work()
}
},
work: function(){
that = this
d.write = d.writeln = function(s){
that.buffer += s
}
d.open = d.close = function(){}
s = d.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src',that.url);
d.getElementById(that.block).appendChild(s)
s.onload = function() {
window.setTimeout(function() {
console.warn(that.block + ' ' +that.buffer)
d.getElementById(that.block).innerHTML += that.buffer;
that.buffer = '';
}, 0);
}
}
}
如果我初始化它一次:
lazyLoad.init(
'http://test.com/test.js',
div1
)
但是,如果我再次用其他參數調用它:
lazyLoad.init(
'http://test2.com/test.js',
div2
)
First init不會工作。 window.buffer
將爲空。我的錯誤在哪裏?
P.S.另一個問題:我試圖用jQuery方法$(window).load()
替換window.onload
,但它觸發兩次。我該如何解決它?
好的,我改變了我的緩衝區,更新後,但它仍然只能在第二個init。首先 - 沒有任何反應 – rsboarder
您仍然只有一個緩衝區,現在是** lazyload.buffer **,您可以使用數組來存儲每個調用的緩衝區。 –
或者更簡單的解決方法是:每次使用新的** lazyload **對象到** init()** –