Javascript 未加载页面时如何访问位置栏中的URL
我工作的公司更新了我们国家的DNS设置,现在很多没有完全限定域名的旧链接不再工作了 之前: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
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和主机文件:(