hash是监听 popstate 事件来实现的,但有点小问题需要处理一下。
history.replaceState 和 history.pushSstate 不触发 popstate 事件,这个问题可以自定义一个方法来实现。
你的问题涉及到 Same Origin Policy(同源策略),这是一个关系到隐私和安全性的问题。任何浏览器都不会给你机会让你访问 **异域** 历史网址。
但是,如果这三个页面在同一域名下,你可以使用 Javascript 的 document.cookie 来记录每次访问的网址。
我写的例子需要4个文件,url_history.js,html1.html,html2.html,html3.html(三个 html 文件内容相同),代码写在空间(hi.baidu.com/keneks/item/50699e21f9300d0c72863e4d)
复制粘贴,将 url_history.js 和其它三个 html 文件放在一起,访问任何一个页面,点击任何链接,上面会自动显示曾经访问过的页面。
历史网址以 array 形式保存在 url_history 变量中,所以 url_history[0] 为上一个,url_history[1] 为上上一个,以此类推。