用户登录这一块有个图片验证码,Firefox中如果用户输错密码,会提示密码错误,然后点击浏览器的后退按钮退回到这个登录界面。可是这个时候验证码的图片还是刚才那一张。
经过测试发现,有些电脑中的Firefox点击后退的时候直接从缓存中读取html、图片等,并且不会执行window.onload。使用以下代码强制更新有时候有效,有时候没效果:
<?php header('Pragma: no-cache'); header("Cache-Control: no-cache, no-store, max-age=0"); header("Expires: 0"); ?>
为了强制更新验证码,可以使用window.onpageshow 事件。window.onload 事件无法在后退的页面中触发,但window.onpageshow可以.代码如下:
<script type="text/javascript"> window.onpageshow = function (){ document.getElementById('authnumimg').src='__URL__/authnum/rnd/'+new Date; } </script>
http://www.koyoz.com/blog/?action=show&id=221