Javascript 未加载页面时如何访问位置栏中的URL

Javascript 未加载页面时如何访问位置栏中的URL,javascript,browser,bookmarklet,Javascript,Browser,Bookmarklet,我工作的公司更新了我们国家的DNS设置,现在很多没有完全限定域名的旧链接不再工作了 之前: http://server:8080/something 之后: http://server.company.com:8080/something 但是其他国家和服务器仍然使用旧的格式(它们将在未来几年内被迁移),我们在邮件和聊天中获得很多旧链接,当我们点击这些链接时,浏览器无法打开它们 我想编写一个bookmarklet,将旧URL替换为新URL,类似于: javascript:window.locat

我工作的公司更新了我们国家的DNS设置,现在很多没有完全限定域名的旧链接不再工作了

之前:
http://server:8080/something

之后:
http://server.company.com:8080/something

但是其他国家和服务器仍然使用旧的格式(它们将在未来几年内被迁移),我们在邮件和聊天中获得很多旧链接,当我们点击这些链接时,浏览器无法打开它们

我想编写一个bookmarklet,将旧URL替换为新URL,类似于:

javascript:window.location.href=window.location.href.replace(/(^http:\/\/[^.]*):/,'$1.company.com:')
不幸的是,bookmarklet无法工作,因为页面未加载,因此
window.location.href
不包含要替换的URL

我还能访问浏览器位置栏中输入的URL吗


或者没有办法,我需要为此创建一个浏览器扩展?

选项1:提示用户输入。他们必须复制/粘贴URL

选项2:创建一个非常简单的网页,它接受URL作为查询参数,重写它,并重定向。设置搜索栏以使用该页面。然后可以将链接粘贴到搜索栏中,而无需单击bookmarklet。甚至可以将链接拖到搜索栏中。若你们想让搜索栏继续搜索,将任何非URL文本重定向到谷歌


选项3:创建一个非常简单的网页,将重定向到正确的URL。将主机更新为指向该网页的“服务器”。如果您无法更新DNS,请更新主机文件。

我最终创建了一个Chrome扩展,它工作得很好:我们只需点击按钮,就可以打开正确的页面。以下是此扩展中的一些相关部分:

manifest.json

{
    "manifest_version": 2,
    "name": "Name of extension",
    "permissions": [
        "activeTab"
    ],
    "background": {
        "scripts": ["script.js"],
        "persistent": false
    },
    "browser_action": {
        "default_icon": "icon.png",
        "default_title": "Tooltip for button"
    }
}
script.js

chrome.browserAction.onClicked.addListener(function(tab) {
    var $before = tab.url,
        $after = $before.replace(/(^http:\/\/[^.:\/]*)([:\/])/,'$1.company.com$2');
    if ($before !== $after) {
        chrome.tabs.update(tab.id, {url: $after});
    }
});

我不明白。为什么无法访问window.location.href?当使用document.ready或window.onload加载页面时,是否等待?由于找不到URL,因此从未加载该页面。我不确定是否遵循了上述所有步骤。对于我们中的一些人来说,这只是一个方便的解决方案,这样我们就可以避免每天多次键入
.company.com
。如果我们只需点击一个按钮(比如复制URL、打开一个站点然后粘贴它等等),我不确定这是否值得。很遗憾,我们无法更改DNS和主机文件:(