Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中创建新的Location对象_Javascript_Url Parsing - Fatal编程技术网

在javascript中创建新的Location对象

在javascript中创建新的Location对象,javascript,url-parsing,Javascript,Url Parsing,是否可以在javascript中创建新的Location对象?我有一个url作为字符串,我想利用javascript已经提供的内容来访问它的不同部分 下面是我正在谈论的一个例子(我知道这不起作用): 这样做是可能的,还是我必须自己创建这个对象?您可以在正则表达式中解析它,以获得匹配的部分。。。我现在没有完整的代码,但可以使用它来获取querydata: var myUrl = window.location.href; var matches = myUrl.match(/([^\?]+)\?(

是否可以在javascript中创建新的Location对象?我有一个url作为字符串,我想利用javascript已经提供的内容来访问它的不同部分

下面是我正在谈论的一个例子(我知道这不起作用):


这样做是可能的,还是我必须自己创建这个对象?

您可以在正则表达式中解析它,以获得匹配的部分。。。我现在没有完整的代码,但可以使用它来获取querydata:

var myUrl = window.location.href;
var matches = myUrl.match(/([^\?]+)\?(.+)/);
var queryData = matches[2];
matches[0]是完整字符串,matches(1)是URL的第一部分(直到?)。。。如果需要,您可以构建一个正则表达式来解析字符串url的每个部分


您还可以使用已经存在的许多库中的一个来实现此目的。

您可以使用锚元素来提取url部分,例如:

var url = document.createElement('a');
url.href = "http://www.example.com/some/path?name=value#anchor";
var protocol = url.protocol;
var hash = url.hash;

alert('protocol: ' + protocol);
alert('hash: ' + hash);
​
它适用于所有现代浏览器,甚至IE 5.5+


举个例子。

你可以利用锚元素的力量

var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);

使用这个标准怎么样


警告:此界面有点新,因此,如果您没有使用,请检查并在目标浏览器上进行测试。

我不知道您可以这样做。整洁。+1我正在输入的内容。
元素实现
位置
URL分解属性可以追溯到最早的JavaScript版本,并且在任何地方都受到支持。它(终于)在HTML5规范+1中实现了标准化。同上。我也不知道
实现了位置。我想我试过一次,然后发现对于IE,我需要在它工作之前将其添加到DOM中。也许我需要再试一次。一个重要的注意事项是:Internet Explorer似乎有一个bug,它在这样的对象上忽略了路径名属性的前导斜杠。您可以通过以下操作对其进行规范化:
url.pathname=url.pathname.replace(/(^\/?)/,“/”只要您不需要支持Internet Explorer,这绝对是最好的解决方案。URL接口使用所有相同的属性名作为位置,因此它完全向后兼容,但它还添加了一个非常有用的
searchParams
属性。不要忘记
newURL(
中的
new
)。
var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);
var url = new URL("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;