如何获取重定向页面的链接以显示在浏览器的历史记录中?

时间:2012-07-02 20:22:51

标签: javascript google-chrome redirect google-chrome-extension

网站包含一个“随机”链接,该链接会加载一个返回307重定向到我们想要的网址的网址。它工作正常:单击它,你加载一个随机页面。问题是,每次你点击它,浏览器都会假设你正在加载同一页面:所以如果你在主页上,那么你按照随机链接5次,然后按回来,你将被全部带走返回主页的方式,无法找到您刚才看到的随机页面。我想修改此行为,以便用户可以通过后退和前进按钮访问以前的随机页面。

我不拥有该网站,因此我不能只更改重定向代码。

这是我尝试过的,所有这些都失败了。

  • 预测重定向到的内容。虽然有些可能,但是没有办法避免高达.1%的点击失败,并且它对意外事件的反应非常差,比如一天晚些时候发布的页面,更不用说改变结构了。
  • 通过ajax加载307页面。请求在readystate == 2停止,我无法访问location标题。
  • 取消点击事件,改为设置location.href = random_link.href。这没有效果 - 新页面仍然没有进入历史。
  • 新页面调用history.pushState。这成功地将页面添加到历史记录中,但我无法找到区分新页面和通过后退按钮打开的页面的方法,因此历史记录很快就会变得非常破坏。
  • localStorage保留我自己的历史。如上所述,我无法确定何时使用后退按钮。

我正在开发一个我非常肯定会工作的解决方案,包括在现有页面上的iframe中加载页面,并使用后台进程和消息传递来处理来自chrome扩展的内容注入这一事实'从iframe中访问window.parent。并使用历史记录API在地址栏中反映当前iframe的网址,并在适当的位置获取后退和转发按钮以应用于当前的iframe。

虽然我很确定最后的解决方案可以使用,但这对于看似简单的问题来说是一种非常复杂和重量级的方法。所以我想在继续之前我会问你们:还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试将位置存储在localStorage中,然后按下后退按钮?

我相信你知道localStorage是如何工作的,你可以参考这个:Is there a way to catch the back button event in javascript?

吨。