0

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

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

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

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

我正在研究一个我很确定会起作用的解决方案,包括在现有页面上的 iframe 中加载页面,并使用后台进程和消息传递来解决无法从 chrome 扩展程序进行内容注入的window.parent事实在 iframe 内。并使用历史 API 在地址栏中反映当前 iframe 的 URL,并在适当的位置获取后退和前进按钮以应用于当前 iframe。

虽然我很确定最后一个解决方案可以工作,但对于看似简单的问题,它是一种极其复杂和重量级的方法。所以我想在继续之前先问你们:还有其他想法吗?

4

1 回答 1

0

Have you tried storing the locations in localStorage, then hi-jacking the back button ?

I am sure you know how localStorage works, for hi-jacking the back button you can refer to this : Is there a way to catch the back button event in javascript?

T.

于 2012-07-02T20:44:45.147 回答