以前一直使用IE6核心的浏览器,所以使用:
来实现验证码刷新一直没问题,也没觉察到在IE8,FireFox下,验证码不刷新这个问题。
后来换了win7的系统装了IE8,使用FireFox的工具来调试JavaScript,才发现验证码不会刷新。
原因在于从ie7起,firefox的缓存机制和ie6不同:由于js指定的src与原来图片的src相同,因此从ie7起,firefox不刷新验证码。
解决办法就是在后边加个参数 Math.random():
由于Math.random()每次随机生成的数据不同,向code.asp传递了不同的参数,浏览器认为img的src发生了改变,因此重新生成了新的验证码。
<img id="code" border="0"
width="60" alt="看不清楚,请点我刷新"
src="${url}/GenerateVerifyCodeServlet" onclick="code.src='${url}/GenerateVerifyCodeServlet?';return false;" />
来实现验证码刷新一直没问题,也没觉察到在IE8,FireFox下,验证码不刷新这个问题。
后来换了win7的系统装了IE8,使用FireFox的工具来调试JavaScript,才发现验证码不会刷新。
原因在于从ie7起,firefox的缓存机制和ie6不同:由于js指定的src与原来图片的src相同,因此从ie7起,firefox不刷新验证码。
解决办法就是在后边加个参数 Math.random():
<img id="code" border="0"
width="60" alt="看不清楚,请点我刷新"
src="${url}/GenerateVerifyCodeServlet" onclick="code.src='${url}/GenerateVerifyCodeServlet?s='+Math.random();return false;" />
由于Math.random()每次随机生成的数据不同,向code.asp传递了不同的参数,浏览器认为img的src发生了改变,因此重新生成了新的验证码。