一个网站包含一个“随机”链接,它加载一个返回 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。
虽然我很确定最后一个解决方案可以工作,但对于看似简单的问题,它是一种极其复杂和重量级的方法。所以我想在继续之前先问你们:还有其他想法吗?