Javascript Safari<;车身空载>;事件不';不要从后退按钮触发
当通过后退按钮进入页面时,我似乎无法在Safari中触发body onload=“…”事件。它在FF和IE中运行良好。有Javascript或jQuery解决方案吗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 }); 即使这不能解
非常感谢您的帮助。您可以尝试在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();
}
};