禁用浏览器后退按钮----学习体会

近来,遇到一个小小的问题:
在一个index.jsp中包含了一个iframe(mainframe),以及一棵树(tree,默认为隐藏状态)。
初始mainframe中的页面A有一个按钮(button),点击button,mainframe会跳转到个页面B,在页面B中会执行一个showTree方法,将树显示出来。这时候,点击浏览器的后退按钮,mainframe回到页面A,而这个时候,tree的依[align=left][/align]然为显示状态,看着非常别扭。

为了解决这个问题,我想到了将浏览器的后退按钮屏蔽掉的方法,但是上网查找了一下,不外乎有这么几种方法:
1、禁止缓存。(点击后退两处,依然可以达到回退效果)
2、通过javascript:window.history.forward(1); 产生前进的效果,抵消用户的后退操作。
3、利用location.replace(this.href);从一个页面跳转到另一个页面。


网上的介绍都比较简单,也没有说是在什么情况下使用才会起作用。摸不着头绪,只好另找方法:是不是可以监听到浏览器的后退操作,然后在浏览器后退的时候执行hiddenTree方法。想了半天也没有想出如何能够监听浏览器的后退操作的方法。最后,也只能再找别的思路了,考虑到回退到页面A的话,必然会触发页面B的unload的事件,于是想是否可以在页面B的unload事件上绑定方法hiddenTree,来隐藏tree。经过测试,果然可以把树给隐藏。
由此,联想到方法2和3,或许这两个方法也是在当前页面unload事件触发时执行的吧?

但是,要是在unload事件上绑定方法的话,那么不仅仅是后退的时候,会触发这个方法,在刷新本页面的时候也会触发这个方法的。

这个问题应该怎么解决呢?


我刚刚接触web开发不久,水平很菜,希望大牛们不要拍砖头哦。

你可能感兴趣的:(JavaScript,Web,jsp,浏览器)