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

时间:2013-06-13 09:07:53

标签: javascript browser bookmarklet

我所在的公司更新了我们国家/地区的DNS设置,现在许多没有完全合格域名的旧链接不再有效。

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

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

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

我想写一个书签,将旧网址替换为新网址,例如:

javascript:window.location.href=window.location.href.replace(/(^http:\/\/[^.]*):/,'$1.company.com:')

不幸的是,bookmarklet不起作用,因为页面未加载,因此window.location.href不包含要替换的URL。

我能否以某种方式访问​​在浏览器的位置栏中输入的网址?

或者我无法为此创建浏览器扩展程序?

2 个答案:

答案 0 :(得分:0)

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

选项2:创建一个非常简单的网页,该网页接受URL作为查询参数,重写并重定向。设置搜索栏以使用该页面。然后可以将链接粘贴到搜索栏中,而无需单击书签。甚至可以将链接拖到搜索栏中。如果您希望搜索栏仍然搜索,请将任何非网址文字重定向到Google。

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

答案 1 :(得分:0)

我最终创建了一个效果很好的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});
    }
});