论坛首页 综合技术论坛

IE7验证码:“看不清,换一个”

浏览 6325 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-27   最后修改:2008-11-18

以前写的登陆页面的验证码“看不清,换一个”的操作脚本在ie6下跑得很正常,在ie7下执行不了。

原程序如下:

   js:

function changerand(obj){

  obj.src="image.jsp";

}

 

 html:

<img src="image.jsp" id=randimg>
<a href="#" onclick="changerand(document.getElementById('randimg'))">看不清,换一个</a>

 

google了一下也没有太好的解决办法,百思不得其解。

后来参照了php的一段验证码脚本,仅仅在changerand中稍稍改动即可。

修改后:

 

function changerand(obj){

  obj.src="image.jsp"+Math.random();

}

 

 问题解决了,但没太搞明白ie7为什么会这样,记在这里,仅供参考。

 

 //2008-11-06引用自http://www.blogjava.net/nickey/archive/2005/11/13/19606.html

 关于随机参数,指的是URL请求中带有一个随机参数。 这个参数,可以是当前时间,或者随机数。 用来避开浏 览器的缓存

   发表时间:2008-10-27  
如果是这样解决的,应该是缓存在作怪。
但是ie没理由缓存啊
0 请登录后投票
   发表时间:2008-10-28  
缓存啊!!!按照路径会做缓存的!
2 请登录后投票
   发表时间:2008-11-08   最后修改:2008-11-08
这样写, 你其实是没有错的, 但是, 有个致命的问题是, 你的服务器一端的控制问题, 不能怪IE的BUG。 我弄个我写的例子给你看吧:
HttpServletResponse response = ....
            response.setContentType("image/jpeg");
            response.setHeader("Expires", "Sat, 16 Jan 1980 12:00:00 GMT");
            response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
            response.addHeader("Cache-Control", "post-check=0, pre-check=0");
            response.setHeader("Pragma", "no-cache");

控制cache的头, 才能解决问题。 在输出图片之前, 做我上面的一些代码, 就可以了。
0 请登录后投票
   发表时间:2008-11-11  
sdh5724 写道

这样写, 你其实是没有错的, 但是, 有个致命的问题是, 你的服务器一端的控制问题, 不能怪IE的BUG。 我弄个我写的例子给你看吧: HttpServletResponse response = .... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("image/jpeg"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Expires", "Sat, 16 Jan 1980 12:00:00 GMT"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.addHeader("Cache-Control", "post-check=0, pre-check=0"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Pragma", "no-cache"); 控制cache的头, 才能解决问题。 在输出图片之前, 做我上面的一些代码, 就可以了。

很受用!!!
0 请登录后投票
   发表时间:2009-03-16  
缓存,
你的写法有问题吧。应该由
obj.src="image.jsp"+Math.random(); 
改为
obj.src="image.jsp?dt="+Math.random();
欺骗IE是不同的URL,强制刷新
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics