对象someUrl #someHash没有方法'包含'

时间:2013-02-04 21:52:55

标签: javascript google-chrome dom

以下代码在Chrome中给我一个错误。似乎window.location.href没有返回String,但这看起来很疯狂。

以下是代码:

var theUrl = "" + window.location.href;
var hashValue = theUrl.contains("#") ? theUrl.split('#')[1] : null; (This is line 6)

这会在Chrome中返回以下错误:

Uncaught TypeError: Object someUrl#someHash has no method 'contains' myFile.js:6

(anonymous function) faq.js:6
k jquery.min.js:2
l.fireWith jquery.min.js:2
p.extend.ready jquery.min.js:2
D

有什么想法吗?

编辑:还尝试document.URL无效。

3 个答案:

答案 0 :(得分:4)

此时,String.contains方法似乎仅受Firefox 19支持

String.contains - JavaScript | MDN

该页面还提到了与MooTools的一些不兼容性,也许你的问题是相关的。暂时你可以像这样检索哈希值

var hashValue = window.location.hash.substr(1) || null;

答案 1 :(得分:4)

.indexOf也可能有用,而不是.contains

hashValue = theUrl.indexOf('#') > -1 ? ... : ...;

答案 2 :(得分:1)

字符串对象没有名为“contains”的函数,但您可以使用的是“indexOf”函数,如果在目标字符串中找到您感兴趣的字符串,它将返回值> = 0, - 1否则。

还有一条评论:您可以使用window.location.hash获取哈希值,因此您不需要执行上述任何操作,而是需要执行以下操作:

var hashValue = window.location.hash.substr(1)||空;