当前位置: 首页 > 面试题库 >

JavaScript单击“后退”按钮时是否存在跨浏览器的onload事件?

湛鸿
2023-03-14
问题内容

对于所有主流浏览器(IE浏览器除外),onload由于后退按钮操作导致页面加载时JavaScript 事件不会触发-仅在页面首次加载时触发。

有人可以指出一些解决该问题的示例跨浏览器代码(Firefox,Opera,Safari,IE等)吗?我对Firefox的pageshow事件很熟悉,但不幸的是Opera和Safari都没有实现这一功能。


问题答案:

伙计们,我发现JQuery仅具有一种作用:当按下后退按钮时,页面将重新加载。这与“ ready ” 无关。

这是如何运作的?好吧,JQuery添加了一个 onunload 事件侦听器。

// http://code.jquery.com/jquery-latest.js
jQuery(window).bind("unload", function() { // ...

默认情况下,它不执行任何操作。但是不管事件处理程序包含什么内容,这似乎都可以在Safari,Opera和Mozilla中触发重新加载。

[ edit(Nickolay) :这就是为什么这样工作:webkit.org,developer.mozilla.org。请阅读这些文章(或下面的单独答案中的我的摘要),并考虑是否确实需要这样做,并使用户的页面加载速度变慢。]

无法相信吗?尝试这个:

<body onunload=""><!-- This does the trick -->
<script type="text/javascript">
    alert('first load / reload');
    window.onload = function(){alert('onload')};
</script>
<a href="http://stackoverflow.com">click me, then press the back button</a>
</body>

使用JQuery时,您将看到类似的结果。

您可能要与没有 onunload的* 该产品进行比较 *

<body><!-- Will not reload on back button -->
<script type="text/javascript">
    alert('first load / reload');
    window.onload = function(){alert('onload')};
</script>
<a href="http://stackoverflow.com">click me, then press the back button</a>
</body>


 类似资料:
  • 问题内容: 您如何确定用户是否按下浏览器中的“后退”按钮? 您如何使用系统在单页Web应用程序内强制使用页内后退按钮? 到底为什么浏览器后退按钮不触发自己的事件!? 问题答案: (注意:根据Sharky的反馈,我提供了用于检测退格的代码) 因此,我经常在SO上看到这些问题,并且最近遇到了我自己控制后退按钮功能的问题。在为我的应用程序寻找最佳解决方案(带哈希导航的单页)几天后,我提出了一个简单的,跨

  • 问题内容: 如何禁用浏览器的“后退”按钮(跨浏览器)? 问题答案: 这个问题是非常相似,这一个 … 您需要强制缓存过期才能正常工作。将以下代码放在页面代码后面。

  • 问题内容: 是否可以检测用户何时单击浏览器的后退按钮? 我有一个Ajax应用程序,如果我可以检测到用户何时单击“后退”按钮,则可以向后显示适当的数据。 任何使用PHP,JavaScript的解决方案都是可取的。最好用任何一种语言解决方案,只需要我可以翻译成PHP / JavaScript的东西即可 编辑:从下面剪切并粘贴: 哇,所有出色的答案。我想使用Yahoo,但我已经使用了Prototype和

  • 我正在开发一个客户端音乐播放器,并正在寻找一种方法来保存与mp3数据完整的播放列表。 localStorage localStorage的5mb限制排除了该选项。我想知道还有什么其他选项。 DataURIs我读过DataURIs,例如,在使用data:URI时,有没有办法指定建议的文件名?和跨浏览器另存为。txt,但不建议默认文件名,尤其是缺乏IE支持,这些都是破坏交易的因素。 IndexedDB

  • 问题内容: 是否可以使用浏览器中的“历史记录后退”按钮检测到用户进入了页面?最好是我想使用angular.js检测到此动作。 我不想使用角度布线。如果用户提交表单,并且在成功提交到服务器并进行重定向之后,它也应该起作用,如果用户使用浏览器的“后退”按钮返回到表单,则也应该是可行的。 问题答案: 这是Angular的解决方案。 我正在使用运行块来启动它。首先,我将实际位置存储在$ rootScope

  • 问题内容: 我有一个带有一些数据的类似表单的页面。并希望在用户单击浏览器后退按钮时显示弹出窗口/警告,询问“他们是否要返回或停留在同一页面上”。我正在使用angular- ui-router,并且只想将此绑定到一个状态/视图。 问题答案: 这是我之前对其他问题的回答,但对您有所帮助 您可以通过使用角度来做到这一点 $ routeChangeStart 在更改路线之前广播。此时,路由服务开始解决发生