如何使用javascript和window.location解析Web浏览器地址?

3

我发现在地址栏中查找特定值是不可能的。

var str = window.location;
//var str = "http://www.website.com/78203/";

var x = str.search(/78203/i);

alert(x);

上面的代码没有返回任何内容,实际上停止了其他所有的运行(表明出现了错误),但控制台中并未抛出任何内容。
如果移除注释,则可以正常运行,返回一个大于-1的值(表示已找到某些内容)。
显然,我没有正确理解这个问题,有人能帮帮我吗?
4个回答

6
你应该使用window.location.href,因为window.location是一个对象而不是字符串,它有一个search属性,其中包含跟随问号符号的URL的部分,包括问号符号。
var str = window.location.href;

var x = str.search(/78203/i);

您还可以使用String.indexOf函数:

var str = window.location.href;

var x = str.indexOf('78203');

它们都将返回搜索到的字符串(或模式)的第一个出现位置,并且如果未找到该值,它将返回-1


太好了!那很有效,使用搜索有什么问题吗?手动字符串可以正常工作。 - jakeisonline
搜索没有问题,问题在于你没有搜索字符串。 - Jacob Mattison
2
正如CMS所说,window.location是一个带有“search”属性的对象。你访问了它,而不是String的属性。 - Pablo

2

window.location实际上是一个Location对象,而不是一个字符串。如果你用var str = window.location.href替换你的代码会发生什么?


1

window.location 是一个对象,而 search 只是字符串的一个方法,因此在对其进行任何字符串操作之前,需要将其转换为字符串。

var str = window.location.toString();

var x = str.search(/78203/i);

我意识到它可能不是字符串,所以尝试了这种方法 - 但似乎对我没有起作用。 - jakeisonline

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接