在 javascript 或 angularjs 中解析 url
Parsing url in javascript or angularjs
我试图在 javascript 中解析 url,我发现了以下方式:
var getLocation = function(href) {
var l = document.createElement("a");
l.href = href;
return l;
};
var l = getLocation("http://example.com:3000/path");
var host = l.host; // example.com
var port = l.port; // 3000
但我遇到了一个问题,如果这些位置:
http://TLVS0015:3000/cti/YTest // the parse found the port, but its not found the host
http://ctmwe:80/ReportServer/ReportService2010.asmx // the parse found the host, but don't found the port
还有其他方法可以解析吗?
来源:- https://gist.github.com/jlong/2428561
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
如果您不需要支持 Internet Explorer (http://caniuse.com/#feat=url),请使用 URL
。使用 hostname
而不是 host
.
> new URL("http://TLVS0015:3000/cti/YTest").hostname
tlvs0015
端口为 80。端口 80 是默认端口,因此它是多余的,因此 ""
。
> new URL("http://ctmwe:80/ReportServer/ReportService2010.asmx").port
""
port = URL.port === "" ? 80 : URL.port
有关 URL()
、consult the MDN API documents 的更多信息。
注意:截至 2017 年 7 月,Internet Explorer 11 不支持 URL
:http://caniuse.com/#feat=url
我试图在 javascript 中解析 url,我发现了以下方式:
var getLocation = function(href) {
var l = document.createElement("a");
l.href = href;
return l;
};
var l = getLocation("http://example.com:3000/path");
var host = l.host; // example.com
var port = l.port; // 3000
但我遇到了一个问题,如果这些位置:
http://TLVS0015:3000/cti/YTest // the parse found the port, but its not found the host
http://ctmwe:80/ReportServer/ReportService2010.asmx // the parse found the host, but don't found the port
还有其他方法可以解析吗?
来源:- https://gist.github.com/jlong/2428561
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
如果您不需要支持 Internet Explorer (http://caniuse.com/#feat=url),请使用 URL
。使用 hostname
而不是 host
.
> new URL("http://TLVS0015:3000/cti/YTest").hostname
tlvs0015
端口为 80。端口 80 是默认端口,因此它是多余的,因此 ""
。
> new URL("http://ctmwe:80/ReportServer/ReportService2010.asmx").port
""
port = URL.port === "" ? 80 : URL.port
有关 URL()
、consult the MDN API documents 的更多信息。
注意:截至 2017 年 7 月,Internet Explorer 11 不支持 URL
:http://caniuse.com/#feat=url