您的位置:首页 > Web前端 > JavaScript

FireFox,IE7点击图片刷新验证码bug的解决

2008-09-18 21:08 369 查看
  现在做的这个网站用到了动态生成验证码的功能。并且点击动态生成的验证码图片要重新生成新的验证码。 
     我的生成验证码的servlet是imms/securityNum.genpic则在需要验证码的页面可以这么调用 
     我这里的ReloadCode函数是重新生成验证码的javascript函数,其内容如下(我使用了jquery):

 

驗證碼:  <input class="input_login" name="___securityNumCookie_"
 type="text" size=11 maxlength="4" />
 <img src="/imms/securityNum.genpic" width="52" height="20" name="numImg"></img>

 

    测试的时候发现,在ie6下点击验证码图片可以生成新的验证码,但是在ie7,firefox下点击图片的时候都没有反应。
    上网查了下资料,发现别人也碰到过类似的问题,初步猜测是ie7,firefox的缓存机制和ie6不同。由于js指定的src与原来图片的src相同,因此ie7,firefox不刷新验证码。解决的方法是为imms/securityNum.genpic页面传递一个参数就可以了。代码如下:
  

Today = new Date();
   var NowHour = Today.getHours();
   var NowMinute = Today.getMinutes();
   var NowSecond = Today.getSeconds();
   var mysec = (NowHour*3600)+(NowMinute*60)+NowSecond; //弄個時間做參數傳過去。
    alert("驗證碼不正確,請重新輸入!");
    document.login.mypretime.value=0;
    alert(mysec);
    document.getElementById("numImg").src="/imms/securityNum.genpic?temptime="+mysec;
    由于传递了不同的参数,浏览器认为img的src发生了改变,因此重新生成了新的验证码。

 

(修改)

在用jfreechart生成圖片時也是用<img src="xxx.xxxx"/>,也導致IE7緩存不會重新請求生成新的圖片。

本來一開始就以為是IE的問題,可是沒想到台灣的IE6也會出現這樣的問題,和IE7一樣。

後來還是這個問題。

 

其實加個Math.random()就搞定了。

    document.getElementById("numImg").src="/imms/securityNum.genpic?temptime="+Math.random();

搞定了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息