10

下面是我所拥有的。

var myString = "http://localhost:8888/www.smart-kw.com/";
alert(myString.indexOf("localhost"));

这给了我警报...但是,如果我更改var myString = "http://localhost:8888/www.smart-kw.com/";var myString = window.location;,它将不起作用(我没有得到警报)。

var myString = window.location;
alert(myString.indexOf("localhost"));
4

3 回答 3

32

window.location是一个访问器属性,获取它的值会给你一个对象,而不是一个字符串,所以它没有indexOf函数。(人们有时认为它是一个字符串是完全可以理解的,因为当你设置它的值时,访问器属性的设置器接受一个字符串;也就是说,它window.location = "some url";确实有效。但是当你得到它时,你没有得到一个字符串。)

如果您愿意,可以使用window.location.toString(),String(window.location)window.location.href为它获取一个字符串,或者使用它的任何各种属性来检查细节。从链接中,给定示例 url http://www.example.com:80/search?q=devmo#test

  • hash: URL 中 # 符号之后的部分,包括 # 符号。您可以侦听 hashchange 事件以获取支持浏览器中哈希更改的通知。
    例子:#test
  • host:主机名和端口号。
    例子:www.example.com:80
  • hostname: 主机名(不含端口号)。
    例子:www.example.com
  • href: 整个网址。
    例子:http://www.example.com:80/search?q=devmo#test
  • pathname: 路径(相对于主机)。
    例子:/search
  • port: URL 的端口号。
    例子:80
  • protocol: URL 的协议。
    例子:http:
  • search: URL 后面的部分?符号,包括 ? 象征。
    例子:?q=devmo

例如,对于您引用的示例,您可以检查window.location.hostname === "localhost".

于 2012-12-02T12:58:04.237 回答
3

据我所知window.location是一个Location object

例如,window.location.href将为您提供整个 URL。

var url = window.location.href;
alert(url.indexOf("domain"));

但这种检查势必会引发误报。您最好使用window.location.hostname包含主机名部分的属性。

var hostname = window.location.hostname;
alert(hostname === "my.domain.com");
于 2012-12-02T12:58:16.287 回答
1

我找到了一种方法来完成这项工作:

(window.location.href).indexOf("localhost") > -1)

我实际上在我的项目中使用它作为条件,它工作得很好。

于 2016-03-03T16:39:18.027 回答