Safari事件不会从后退按钮触发

时间:2012-02-10 12:02:04

标签: javascript jquery safari onload back

当通过后退按钮输入页面时,我似乎无法在Safari中触发身体onload =“...”事件。它在FF和IE中工作正常。是否有Javascript或jQuery解决方案?

任何帮助表示感谢。

5 个答案:

答案 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分成易于识别的部分。

相关问题