こんにちは、私は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
は空になります。私のミスはどこですか?
こんにちは。 init()関数のパラメータとしてオブジェクトリテラル '{url: 'http://test.com/test.js'、block:div1}'を渡すべきではありませんか?何かエラーが出ますか?いつあなたはinit()を呼び出しますか? –
不正なコピー貼り付け:)固定 – rsboarder