首页 新闻 会员 周边

js高手请进(js难题)

0
悬赏园豆:200 [已解决问题] 解决于 2012-11-06 13:32

<html><script>(这写什么呢)</script><div><img  src="a.jpg" ></div><div><img  src="b.jpg" ></div>...</html>

如上所示,页面中DIV的数量很多,可能上千个。而且DIV没有ID,没有CLASS属性,重点是DIV和DIV内的内容不能修改。请问:如何在页面加一段JS代码,使得页面中所有DIV的图片不加载呢。只加载空的DIV也行,直接去掉DIV也行。总之图片的容量很大,目的是让用户不看到图片。减小对图片服务器的压力。

难点主要是DIV和DIV的内容都不能修改。只加一段JS代码。

方法不知道有没有可能通过在DIV元素加载的事件里面取消IMG的内容,或者中断a.jpg的请求之类的。豆子全部奉上,谢谢

ming211n1的主页 ming211n1 | 初学一级 | 园豆:24
提问于:2012-11-06 00:17
< >
分享
最佳答案
3

用  document.ready 即可,这个 jquery方法是在 html dom结构下载完之后就执行,浏览器解析之前执行,即当浏览器 从上到下解析时,解析到你的div 时,如果里面的img 的src为空就行了,就是说可以 在ready函数中设置

$(document).ready(function(){
  $("div img").attr("src","");
})
收获园豆:135
Qlin | 老鸟四级 |园豆:2403 | 2012-11-06 09:24

也有人说过这个方法,我误以为图片还是会加载完。听你一解释才明白了多谢

ming211n1 | 园豆:24 (初学一级) | 2012-11-06 14:16

经测试是可行的

ming211n1 | 园豆:24 (初学一级) | 2012-11-06 14:17
JQury中的$(document).ready(function) 
当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件
不好意思,这方法也是在图像加载完才执行的。
ming211n1 | 园豆:24 (初学一级) | 2012-11-06 15:33

@ming211n1: 

哦,没测试过,现在 你是怎么解决的啊?分享一下

Qlin | 园豆:2403 (老鸟四级) | 2012-11-06 17:14

@Qlin:没解决呢

ming211n1 | 园豆:24 (初学一级) | 2012-11-07 17:35

@ming211n1: 

呵呵 我问过高手了, html dom文档返回给 浏览器时,如果img 有地址,就会去请求,无法阻止。

要阻止,就是要在服务器端生成html时,把img的src去掉。

document.ready函数的认识也有误,是在 浏览器加载完成dom文档,即已经解析了过了,要不然 浏览器根本就不会知道有js,有html元素,只是 浏览器解析,不会卡在图片加载,即不会等图片加载,异步的,如果是js加载就是同步的。

Qlin | 园豆:2403 (老鸟四级) | 2012-11-07 17:40
其他回答(9)
0

不知道这么做的意义是什么。

$("div img").attr("src",""),直接把所有div内的图片src清空行吗?

收获园豆:10
飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-06 00:22

或者你页面生成的时候先不给img赋值src,通过其他事件赋值。

支持(0) 反对(0) 飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-06 00:25

@飞来飞去: 这个不行的,因为JS执行的时候,div还没有加载出来。

谢谢了,这么做的意义说来话长,但是必须这么做。

支持(0) 反对(0) ming211n1 | 园豆:24 (初学一级) | 2012-11-06 00:29

@ming211n1: 你可以试着说明做的意义。也许你说的不是解决你所说事情的最佳解决方法。

支持(0) 反对(0) 飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-06 00:33

@ming211n1: 你可以在浏览器里面设置不接收图片,或者在iis里把图片格式的mime删除

支持(0) 反对(0) 飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-06 00:37

@飞来飞去: 有人说解决了给2万块钱,呵呵,开玩笑。

可以认为JS和DIV是两个公司的代码,或者说DIV部分的代码是加密的,并且是动态的。


浏览器设置的话,只是自己看不到了。IIS服务器在国外的

支持(0) 反对(0) ming211n1 | 园豆:24 (初学一级) | 2012-11-06 00:43

@ming211n1: 可以试试用ajax获得html内容,然后替换里面的img标签,在展示在页面上。

比如页面1

<html>

<head>

--引用jquery

<script>

$(document).ready(function(){

$.ajax({

cache:false,

type:"get",

url:页面2的url,

success:function(data){

$("div").html(data.replace("<img","<noimg"));--这步需要替换页面2html内容中的图片标签

}

});

});
</script>

</head>

<body>

<div></div>

</body>

</html>

页面2就是你需要处理的页面

支持(0) 反对(0) 飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-06 08:13
0

真不知道楼主这样做的意义是什么 既然不想在页面中显示图片 而你却在代码中增加图片标签 ,这不是自相矛盾吗

收获园豆:5
转角遇到bug | 园豆:227 (菜鸟二级) | 2012-11-06 00:26
0

这个不难呀

首先用$(document).ready,这样保证等到所有页面元素加载完再执行

然后用$('div').eq(n),表示取第几个div,n=0表示第一个。这样你想取哪个就改变n呗

最后的示例代码如下:

$(document).ready(function(){
    $('div').eq(0).css('','');
});
收获园豆:10
田林九村 | 园豆:2367 (老鸟四级) | 2012-11-06 07:59
1

应该也是这样,在页面元素加载完之后执行去除img的操作

引入jquery,在

$(document).ready(function(){

  $("img").attr("src","");

})

收获园豆:10
ms_water | 园豆:510 (小虾三级) | 2012-11-06 08:55
0

jquery应该是可以帮助到你的

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-06 08:59
0

亲,据我的揣测,js可以控制图片不显示,但是js只能让浏览器不显示图片,没法控制图片不会被服务器加载到客户端。您的目的是减轻图片服务器的压力,而且为了达到这个目标想让所有的图片不显示。表示对图片服务器的配置稍作修改,比如可以对图片总文件夹的名字稍作修改,让找不到就可以了。这样可以帮你从根本上一次解决所有问题。

收获园豆:20
AngelGong | 园豆:254 (菜鸟二级) | 2012-11-06 09:16
1

引入jquery,在

$(document).ready(function(){

  $("img").attr("src","");

})

 
jason2013 | 园豆:1998 (小虾三级) | 2012-11-06 09:25
0

像楼上几位说的  

$(document).ready(function(){
  $("img").attr("src","");
})
 
sym_cn | 园豆:798 (小虾三级) | 2012-11-06 09:40
0

将此页面放在一个总的div中,并将此div设为不显示。

类猿人 | 园豆:204 (菜鸟二级) | 2012-11-06 14:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册