页面加载失败时获取Chrome中的当前域名

Getting the current domain name in Chrome when the page fails to load

如果您尝试使用 Chrome 加载:http://sdqdsqdqsdsqdsqd.com/

您将获得:

ERR_NAME_NOT_RESOLVED

我希望通过小书签能够获取当前域名并将其重定向到 whois 页面以检查该域是否可用。

我在控制台试过:

window.location.href

但它输出:

"data:text/html,chromewebdata"

有没有办法找回失败的URL?

在 Chrome 错误页面上,location.href 没有指向您尝试访问的域,因为它是一个内部托管页面。

但是,如果您展开 "Show Details" link.

,您尝试访问的域名是可用的

您可以 运行 在控制台(或小书签)中使用此代码来解析域名:

document.querySelector('strong[jscontent="hostName"]').textContent

nderscore 的修改版本,因为您需要为正确的 return 设置一个 if 语句。

   function getUrl () {
     if(window.location.hostname == "") {
       return document.querySelector('strong[jscontent="hostName"]').textContent
     } else{
       return window.location.href;
     }
   }

其他人给出的解决方案无效(可能是因为我得到了不同的错误或有更新的版本:Chrome 55):

document.querySelector('strong[jscontent="hostName"]').textContent

但同样可以通过以下方式实现:

document.querySelector('#reload-button').url

一个可能更适合未来的版本(来自

loadTimeData.data_.summary.failedUrl

所以一个包含所有解决方法的跨版本解决方案:

var url = (l‌​ocation.href === 'data‌​:text/html,chromeweb‌​data'
    && loadTimeData.data_.summary.failedUrl
    || document.querySelector('#reload-button').url
) || location.href;

var hostname = (l‌​ocation.href === 'data‌​:text/html,chromeweb‌​data'
    && loadTimeData.data_.summary.hostName
    || document.querySelector('strong[jscontent="hostName"]').textContent
) || location.hostname;

在使用开发人员工具查看 html 页面的源代码时(右键单击网页,然后 select 检查元素),我发现完整的原始代码失败 URL 在一个名为

的变量中

loadTimeData.data_.summary.failedUrl

在我的例子中,我必须将自动生成的 URL 中的一些 'incorrect part' 更新为 'correct part'。所以我创建了这样的 bookmarlet:

javascript: location.assign(loadTimeData.data_.summary.failedUrl.replace('IncorrectPart','CorrectPart'));