一直没有关注这个浏览器,直到最近有用户给我报bug。其具体表现就是Opera的缓存好像非常彻底,当用户点击链接离开某个页面后,如果再按回退按钮,所有应该动态载入的内容都没有动态载入,而是保存着离开之前的状态,因此我写了个测试代码
<html> <head> <meta charset="UTF-8" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> </head> <body> <a href="http://segmentfault.com/">进入其它网页</a> <div id="result"></div> <script> $(document).ready(function () { $('#result').html((new Date).getTime()); }); </script> </body> </html>
测试发现,不论隔多长时间,点击返回后页面上还是显示上次的数值,没有任何改变。我想排除jquery的问题,因此把代码改进成下面这样
<html> <head> <meta charset="UTF-8" /> </head> <body> <a href="http://segmentfault.com/">进入其它网页</a> <div id="result"></div> <script> alert((new Date).getTime()); </script> </body> </html>
结果第一次页面弹出了对话框显示了时间,但是从其它页面回退以后,居然就没有任何对话框弹出了!!我测试了其它浏览器,Chrome,Safari,Firefox,都没有这个问题。这种缓存方式也太奇葩了吧,我要执行js怎么办?有人知道让Opera强制执行的技巧么?
Scripts can set the history.navigationMode property to one of these values: 'automatic', 'compatible', or 'fast'.
http://www.opera.com/support/kb/view/...