我正在开发一个Web应用程序。我写了一些JS脚本,以便在文档就绪时执行。但是在Chrome中,当我们点击后退按钮并返回上一页时,它会再次执行所有js脚本。但是当我在firefox上使用它时,它不会执行JS。
我在一个页面上有一个手风琴,当用户打开任何手风琴并进入手风琴下的其中一个链接之后,如果再次点击手风琴页面上的后退按钮,chrome就会关闭所有的手风琴,因为我写了脚本关闭文档准备好的所有这些。但是firefox没有关闭。
有没有办法用javascript解决这个问题?这样我就可以设置if(history.forward.length < 1){ do this....}
答案 0 :(得分:1)
您可以使用pageshow事件来保证始终检测到特定页面的导航,无论用户是按下后退/前进按钮还是选择链接,无论使用哪个浏览器。
然后,您可以执行有关UI状态的检查并根据需要执行逻辑(即修改UI,防止执行其他JS)。
window.addEventListener('pageshow', function(event) {
// check state of UI, etc.
});
答案 1 :(得分:1)
我想到的解决方案是使用sessionStorage来了解它是否是第一次加载。或者甚至更好,您可以将您的手风琴状态保存在会话存储中,这样它总是以用户想要的方式。
答案 2 :(得分:0)
就我而言,iframe是一个隐藏的iframe(宽度和高度为零)。
这个iframe只是12年前开发的遗留系统的解决方法。但现在仍在使用当前的应用程序。
要解决此问题,我只是将加载到iframe的页面重定向到空白页面。
示例:
page_loaded_into_iframe.php
<?php
//do the php stuffs
?>
<script>
alert("hello world");
location.href = "about:blank"; // here, where the the magic happens!
</script>
按下&#34;后退按钮&#34;,浏览器将重新加载空白页。
请注意,如果您的案例与我的案件不相似,则可能不适用。
答案 3 :(得分:0)
在Chrome扩展程序中,您可以使用以下功能:
chrome.webNavigation.onCommitted.addListener(function callback)
在回调函数中,您可以查看参数:
transitionType + transitionQualifiers
寻找:
&#34; forward_back&#34;用户使用“前进”或“后退”按钮启动导航。
对于deatils,请参阅chrome.webNavigation
当然,可以使用通常的消息模型将此事件传达给内容脚本(请参阅:Message Passing