Javascript 多次调用对象
您好,我有替换Javascript 多次调用对象,javascript,Javascript,您好,我有替换文档的代码。编写,生成缓冲区,然后将缓冲区推入文档: var lazyLoad = { url: '', block: '', buffer: '', init: function(url,block){ that = this that.url = url; that.block = block; console.info(this.block) consol
文档的代码。编写,生成缓冲区,然后将缓冲区推入文档:
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
)
首先,它不起作用<代码>窗口。缓冲区将为空。我的错在哪里
另一个问题:我试图用jQuery方法$(window.load()
替换window.onload
,但它触发了两次。如何修复它?基本上,您只有一个缓冲区:window.buffer,如果调用init()两次,window.buffer将由第二次调用操作,而第一次调用可能无法完成我建议您为每个init()使用单独的缓冲区。基本上可以避免这个问题。
关于你的第二个问题
window.onload != $(window).load()
window.onload将只执行您上次分配给它的方法,而$(window.load()维护一个链,您可以init()两次,然后链中有两个方法。好的,我更改了缓冲区,更新了post,但它仍然只在第二次init时工作。首先-什么都没有发生您仍然只有一个缓冲区,即lazyload.buffer。现在,您可以使用数组来存储每次调用的缓冲区。或者更简单的解决方案是:每次使用新的lazyload对象初始化()”或者更简单的解决方案是:每次使用新的lazyload对象初始化()”您的意思是什么?