当通过后退按钮输入页面时,我似乎无法在Safari中触发身体onload =“...”事件。它在FF和IE中工作正常。是否有Javascript或jQuery解决方案?
任何帮助表示感谢。
答案 0 :(得分:4)
尝试:
window.addEventListener("pageshow", function() {
alert('page shown');
}, false);
对于 Opera 浏览器,请阅读:http://samuli.hakoniemi.net/onload-issues-with-opera/
答案 1 :(得分:0)
众所周知。 Safari和许多其他浏览器缓存页面,当您导航回到它时,它们只是恢复以前的状态。
以下是关于此主题的一篇优秀的MDN文章(它与FF 1.5有关,但也适用于其他浏览器):https://developer.mozilla.org/En/Using_Firefox_1.5_caching
尝试@zvona建议的pageshow
事件。
答案 2 :(得分:0)
如果未触发onload事件,则应设置cache-control。
<head>
<meta charset="utf-8">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
或在正文中添加标记:
<iframe style=”height:0px;width:0px;visibility:hidden” src=”about:blank”>
this frame prevents back forward cache
</iframe>
答案 3 :(得分:0)
这是唯一对我有用的东西:
http://jkoder.com/prevent-safariany-browser-loading-from-cache-when-back-button-is-clicked/
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload();
}
};
答案 4 :(得分:-1)
不是使用onload
标记的<body>
属性,而是尝试使用带有jQuery的DOM ready事件,如下所示:
$(document).ready(function() {
// your code here
});
或者,速记版本:
$(function() {
// your code here
});
即使这不能解决您使用Safari的问题,但它仍然是一个很好的做法,因为它将您的HTML和Javascript分成易于识别的部分。