我hosts file blocking所以有时间,我通过交易浏览这些“找不到页面”的错误。
由于我厌倦了复制目标网址,无法使用,在地址栏中替换它并点击输入,我写了一个方便的书签来自动执行此操作:
(function () {
var href = window.location.href;
var loc = href.indexOf('url=');
if (loc > 0) {
var endLoc = href.indexOf('&', loc + 4);
endLoc = endLoc > 0 ? endLoc : href.length;
window.location.href = unescape(href.substring(loc + 4, endLoc));
}
})()
现在问题是Chrome内部将内部重定向和无法访问的页面转移到自己的bounce.php
,这会产生以下错误页面。
由于它支持history API,因此浏览器地址栏中的网址不会发生变化,如以下数据所示:
> JSON.stringify(window.history)
{"state":null,"length":2}
现在的问题是,我的bookmarklet不起作用,因为window.location.href
一旦发生这种情况就指向"data:text/html,chromewebdata"
。
我看过这个问题How do you get the previous url in Javascript?,其接受的答案是幸福的错误。理所当然,document.referrer
在我的情况下是空的。
那么有没有办法从window.history
找到以前的网址? window.history.previous
是非标准的,无论如何都无法在Chrome上运行。
答案 0 :(得分:0)
找到一种方法(至少在它持续时!)
Chrome会在document.title
中设置整个网址,因此只需查询即可。如果有兴趣的话,请修改以下代码:
(function () {
var href = document.title;
var loc = href.lastIndexOf('http');
if (loc > 0) {
var endLoc = href.indexOf(' is not available', loc);
endLoc = endLoc > 0 ? endLoc : href.length;
window.location.href = unescape(unescape(href.substring(loc, endLoc)))
}
})()
注意:来自Google广告的链接需要加倍unescape
。