如上所述,我找到了一个解决方案,并在此处发布以供参考和反馈。
解决方案的第一阶段是在页面中添加以下内容:
<!-- at the top of the content page -->
<IFRAME id="page_is_fresh" src="fresh.html" style="display:none;"></IFRAME>
<SCRIPT style="text/javascript">
function reload_stale_page() { location.reload(); }
</SCRIPT>
的内容fresh.html
并不重要,因此以下内容就足够了:
<!-- fresh.html -->
<HTML><BODY></BODY></HTML>
当客户端代码更新页面时,需要将修改标记如下:
function trigger_reload_if_user_clicks_back_button()
{
// "dis-arm" the reload stale page function so it doesn't fire
// until the page is reloaded from the browser's cache
window.reload_stale_page = function(){};
// change the IFRAME to point to a page that will reload the
// page when it loads
document.getElementById("page_is_fresh").src = "stale.html";
}
stale.html
做所有的工作:当它被加载时,它会调用reload_stale_page
函数,如果需要的话会刷新页面。第一次加载(即修改后,该reload_stale_page
函数不会做任何事情。)
<!-- stale.html -->
<HTML><BODY>
<SCRIPT type="text/javascript">window.parent.reload_stale_page();</SCRIPT>
</BODY></HTML>
从我在这个阶段的(最小)测试来看,这似乎可以按预期工作。我有没有忽略什么?