0

以下代码在 Chrome 中给了我一个错误。似乎window.location.href没有返回字符串,但这似乎很疯狂。

这是代码:

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无济于事。

4

3 回答 3

4

目前该String.contains方法似乎仅受 Firefox 19 支持

String.contains - JavaScript | MDN

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

var hashValue = window.location.hash.substr(1) || null;
于 2013-02-04T22:11:40.363 回答
4

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

hashValue = theUrl.indexOf('#') > -1 ? ... : ...;
于 2013-02-04T22:17:52.147 回答
1

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

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

var hashValue = window.location.hash.substr(1) || 无效的;

于 2013-02-04T22:19:50.503 回答