Safari<正文加载>事件不会从后退按钮触发正文加载>
当通过后退按钮进入页面时,我似乎无法在 Safari 中触发 body onload="..." 事件。在 FF 和 IE 中运行良好。有 Javascript 或 jQuery 解决方案吗?
任何帮助表示赞赏。
I don't seem to be able to get the body onload="..." event to fire in Safari when the page is entered via the back button. It works fine in FF and IE. Is there a Javascript or jQuery solution?
Any help appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
尝试:
对于 Opera 浏览器,请阅读以下内容:http:// samuli.hakoniemi.net/onload-issues-with-opera/
Try:
For Opera browser, read this: http://samuli.hakoniemi.net/onload-issues-with-opera/
这是众所周知的。 Safari 和许多其他浏览器会缓存该页面,当您导航回该页面时,它们只会恢复之前的状态。
以下是关于此主题的一篇很好的 MDN 文章(它是关于 FF 1.5 但也应该适用于其他浏览器): https://developer.mozilla.org/En/Using_Firefox_1.5_caching
尝试使用 @zvona 建议的
pageshow
事件。This is well known. Safari and many other browser cache the page and when you navigate back to it, they just restore the previous state.
Here is a good MDN article about this topic (it's about FF 1.5 but should apply to other browsers as well): https://developer.mozilla.org/En/Using_Firefox_1.5_caching
Try the
pageshow
event like @zvona suggested.如果 onload 事件没有被触发,你应该设置缓存控制。
或在正文中添加标签:
if the onload event is not fired,you should set the cache-control.
or add a tag in the body:
这是唯一对我有用的东西:
http://jkoder.com/prevent-safariany-browser-loading-from-cache-when-back-button-is-clicked/
This was the only thing that worked for me:
http://jkoder.com/prevent-safariany-browser-loading-from-cache-when-back-button-is-clicked/
您可以尝试使用 jQuery 的 DOM 就绪事件,而不是使用
标记的
onload
属性,如下所示:或者,简写版本:
Even如果这不能解决您的 Safari 问题,一般来说这仍然是一个很好的做法,因为它将您的 HTML 和 Javascript 分成易于识别的部分。
Rather than using the
onload
attribute of the<body>
tag, you could instead try using the DOM ready event with jQuery, like so:Or, the shorthand version:
Even if this doesn't solve your issue with Safari, it's still a good practice in general because it separates your HTML and Javascript into easily discernible parts.