测试代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body><div id='xx'></div>
</body>
<script>
window.onload = function(){ var div =document.getElementById('xx');
for(var i=0;i<20;i++){
var span = document.createElement('span');
span.innerHTML = "<img src='http://community.csdn.net/ui/scripts/System/_resource/blank.gif'>";
div.appendChild(span)
}
}
</script></body>
</html>
ie6下每次都会请求该图片
怎么让他知请求一次了
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body><div id='xx'></div>
</body>
<script>
window.onload = function(){ var div =document.getElementById('xx');
for(var i=0;i<20;i++){
var span = document.createElement('span');
span.innerHTML = "<img src='http://community.csdn.net/ui/scripts/System/_resource/blank.gif'>";
div.appendChild(span)
}
}
</script></body>
</html>
ie6下每次都会请求该图片
怎么让他知请求一次了
var h='';
for(var i=0;i<20;i++){
var span = document.createElement('span');
h+ = "<span><img src='http://community.csdn.net/ui/scripts/System/_resource/blank.gif'></span>";
}
div.innerHTML(h);
你说的我不懂
你不如修改下代码吧
怎么让它怎么对图片只发送一次请求、to2
不明白
不知道你想说明什么
我想说下我想知道的
一共有20个一样的图片 我只希望他只发送一次请求
你可以用httpwatch 或者 fiddler会看请求
只是在ie6下才会重复发送
不明白与改变dom结构有什么关系to3
先把代码写对了先
一看就能看看到代码是错的
1\ 用createDocumentFragment
window.onload = function(){ var div =document.getElementById('xx');
var df=document.createDocumentFragment();
for(var i=0;i<20;i++){
var span = document.createElement('span');
span.innerHTML = "<img src='http://community.csdn.net/ui/scripts/System/_resource/blank.gif'>";
df.appendChild(span)
} div.appendChild(df);}2、用div innerHTMLwindow.onload = function(){ var div =document.getElementById('xx');
var arr=[];
for(var i=0;i<20;i++){
arr.push( "<img src='http://community.csdn.net/ui/scripts/System/_resource/blank.gif'>"); } div.innerHTML=arr.join("");}
var h='';
for(var i=0;i<20;i++){
h+= "<span><img src='http://www.baidu.com/img/baidu_sylogo1.gif'></span>";
}
div.innerHTML=h;
</script>
请求20次还不算多 如果上上千次了 我昨天弄了个树 今天早上到公司一看 (ps 公司才有ie6)
不停请求 在请求 看着蛋疼to 7,8楼
不知道你们测试没有
依旧是请求20次问题找到了
http://topic.csdn.net/u/20080825/00/9fe0f232-21d7-4e6f-870c-e2d288799230.htmlhttp://www.zoomhoo.com/viewthread.jsp?tid=629ie6 onload里面用innerHTML 会忽略本地的缓存
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body><div id='xx'></div>
</body>
<script>
window.onload = function(){
var model = document.createElement('span');
model.innerHTML = "<img src='http://csdnimg.cn/www/images/csdnindex_logo.gif'/>";
var img = model.getElementsByTagName('img')[0];
img.onload = function() {
img.onload = null;
var div = document.getElementById('xx');
for(var i = 0; i < 20; i++){
var span = model.cloneNode(true);
div.appendChild(span)
}
model.parentNode.removeChild(model);
}
document.body.appendChild(model);
}
</script>
</body>
</html>
var tmp=[];
for(var i=0;i<20;i++){
tmp.push('<span>'+
+"<img src='http://community.csdn.net/ui/scripts/System/_resource/blank.gif'>";
+'</span>');
}
div.innerHTML+=tmp.join('');
}
至少可以优化一下
你这么写不应该算是 copy节点影响的效果
onload 是延迟执行的 都跳出onload的过程了
用innerHTML也是可以的
window.onload = function(){
var model = document.createElement('span');
model.innerHTML = "<img src='http://csdnimg.cn/www/images/csdnindex_logo.gif'/>";
var img = model.getElementsByTagName('img')[0];
img.onload = function() {
var div = document.getElementById('xx');
/*img.onload = null;
var div = document.getElementById('xx');
for(var i = 0; i < 20; i++){
var span = model.cloneNode(true);
div.appendChild(span)
}
model.parentNode.removeChild(model);*/
var arr =[]
for(var i = 0; i < 20; i++){
arr.push("<img src='http://csdnimg.cn/www/images/csdnindex_logo.gif'/>")
}
div.innerHTML=arr.join('');
}
document.body.appendChild(model);
}用setTimeout跟上面是一样的效果
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ready</title>
</head>
<body>
<div id='xx'></div>
</body>
<script> setTimeout(function(){
var div = document.getElementById('xx');
/*img.onload = null;
var div = document.getElementById('xx');
for(var i = 0; i < 20; i++){
var span = model.cloneNode(true);
div.appendChild(span)
}
model.parentNode.removeChild(model);*/
var arr =[]
for(var i = 0; i < 20; i++){
arr.push("<img src='http://csdnimg.cn/www/images/csdnindex_logo.gif'/>")
}
div.innerHTML=arr.join('');
},0)
}
</script></body>
</html>
onload 是延迟执行的 都跳出onload的过程了
我的意思是
img.onload是延迟执行的 都跳出window.onload的过程了
这种方法也是不行的哦
感觉在onload里面创建图片 都去发出请求
测试代码<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ready</title>
<script>
var img = document.createElement('img');
img.src='http://csdnimg.cn/www/images/csdnindex_logo.gif';
</script>
</head>
<body>
<div id='xx'></div>
</body>
<script>
window.onload = function(){
var div = document.getElementById('xx')
for(var i=0;i<20;i++){
div.appendChild(img.cloneNode(true));
}
}
</script>
</body>
</html>
for(var i=0;i<1000;i++){
div.appendChild(img.cloneNode(true));
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ready</title>
<script>
var img = document.createElement('img');
img.src='http://csdnimg.cn/www/images/csdnindex_logo.gif';
</script>
</head>
<body>
<div id='xx'></div>
</body>
<script>
window.onload = function(){
var div = document.getElementById('xx')
div.appendChild(img);
for(var i=0;i<20;i++){
document.body.appendChild(div.cloneNode(true));
//div.appendChild(img.cloneNode(true));
}
}
</script>
</body>
</html>