谷歌浏览器插件:如何从网址获取域名(tab.url)
问题描述:
使用Google Chrome API的tab.url
value,从整个值中获取域的最佳方法是什么?谷歌浏览器插件:如何从网址获取域名(tab.url)
在JavaScript中,我会使用window.location.protocol
& window.location.hostname
。例如这样的事情:
var domain = window.location.protocol + "//" + window.location.hostname;
但是得到扩展域,而不是选项卡所以不能用这种方法。所以用一个类似于下面的函数...我如何从tab.url
值剥离域?
function show_alert() {
chrome.tabs.getSelected(null, function(tab) {
var currentURL = tab.url;
alert(currentURL);
});
}
答
首先,域不包含协议。我为你的问题创建了一个正则表达式。要获得主机名(你想这样做,因为IP地址不域)一个URI,请使用下列内容:
var domain = uri.match(/^[\w-]+:\/{2,}\[?([\w\.:-]+)\]?(?::[0-9]*)?/)[1];
// Given uri = "http://www.google.com/", domain == "www.google.com"
如果想原点(协议+主机(而不是主机名,有一个而不是域差)+可选的端口),使用the following:
var origin = uri.match(/^[\w-]+:\/{2,}\[?[\w\.:-]+\]?(?::[0-9]*)?/)[0];
// Given uri = "http://www.google.com/", origin == "http://www.google.com"
答
由于这个问题最初回答,较好地解决已经出现。
大部分现代浏览器都支持使用URL
constructor,它提供了访问href
,hostname
,path
和分裂一个URL的所有标准方法的。
若要获得域,可以做到以下几点:
chrome.tabs.getSelected(null, function (tab) {
var url = new URL(tab.url)
var domain = url.hostname
// `domain` now has a value like 'example.com'
})
+5
这应该是被接受的答案。只要对疯狂的正则表达式说不! :-) – Perry 2016-08-26 23:50:31
只是辉煌。 – miksiii 2015-01-22 00:06:10