Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Safari<;车身空载>;事件不';不要从后退按钮触发_Javascript_Jquery_Safari_Onload_Back - Fatal编程技术网

Javascript Safari<;车身空载>;事件不';不要从后退按钮触发

Javascript Safari<;车身空载>;事件不';不要从后退按钮触发,javascript,jquery,safari,onload,back,Javascript,Jquery,Safari,Onload,Back,当通过后退按钮进入页面时,我似乎无法在Safari中触发body onload=“…”事件。它在FF和IE中运行良好。有Javascript或jQuery解决方案吗 非常感谢您的帮助。您可以尝试在jQuery中使用DOM就绪事件,而不是使用标记的onload属性,如下所示: $(document).ready(function() { // your code here }); 或简写版: $(function() { // your code here }); 即使这不能解

当通过后退按钮进入页面时,我似乎无法在Safari中触发body onload=“…”事件。它在FF和IE中运行良好。有Javascript或jQuery解决方案吗


非常感谢您的帮助。

您可以尝试在jQuery中使用DOM就绪事件,而不是使用
标记的
onload
属性,如下所示:

$(document).ready(function() {
    // your code here
});
或简写版:

$(function() {
    // your code here
});
即使这不能解决Safari的问题,但总体来说,这仍然是一个很好的做法,因为它将HTML和Javascript划分为易于识别的部分。

尝试:

window.addEventListener("pageshow", function() {
  alert('page shown');
}, false);

对于Opera浏览器,请阅读以下内容:

这是众所周知的。Safari和许多其他浏览器会缓存页面,当您导航回页面时,它们只会恢复以前的状态

下面是一篇关于这个主题的好MDN文章(它是关于FF 1.5的,但也应该适用于其他浏览器):


尝试类似@zvona建议的
pageshow
事件。

如果未触发onload事件,则应设置缓存控件

<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>

此帧阻止前向缓存

这是唯一对我有用的东西:


它在chrome中工作吗?附加到
onload
事件的代码做什么?你确定事件根本没有发生,或者只是没有发生任何可见的事情吗?豪尔赫·皮尼奥。我还没有把铬烘干。仍然通过浏览器工作…这是一个已知的问题。好的一面是Safari“缓存”类似表单元素状态的UI状态。它将根据标志值刷新页面。我已经设置了一个警报,看看它是否在使用后退按钮时触发。警报在FF和IE中显示良好,但在Safari中没有。因此刷新不会发生。嗨,安东尼。我刚试过这个,但它也只在FF和IE中开火。Zvona,我试过了,但什么也没发生。代码示例是否适合剪切粘贴到我的站点,即是否需要更改任何内容?这样很好。我用Chrome做了测试,效果不错,不知道Safari。如果有帮助的话,你可以阅读这篇文章:zvona,我在Safari和FF中有pageshow要触发,但在IE中没有。你知道它是否也应该在那里工作吗?如果没有,我如何区分浏览器以避免doc.ready和pagshow两次调用函数?@mark54类似于:If(“窗口中的onpageshow”){window.addEventListener(“pageshow”,[…],false);}else{window.addEventListener(“load”,[…],false);}实际上,对于(较旧的)IE,您可能需要window.attachEvent而不是addEventListener。做一些谷歌搜索,你会没事的(因为这是一个问题里面的一个问题:))嗨,简,我已经在Safari和FF中触发了pageshow,但不是IE。你知道它是否也应该在那里工作吗?如果没有,我如何区分浏览器以避免doc.ready和pagshow调用函数两次?
window.onpageshow = function(event) {
  if (event.persisted) {
      window.location.reload(); 
  }
};