为什么我在chrome中遇到未定义函数的错误?

时间:2014-08-11 18:56:38

标签: javascript string google-chrome firefox

如果url是主页(即index.html),则某些css属性将应用于其某些元素。以下脚本在Mozilla Firefox中正常运行,但Chrome中的错误表示函数contains未定义。这是为什么 ?是的,Chrome没有将变量URL视为字符串吗?

var url = document.URL;
var links = document.getElementsByTagName("a");

if(url.contains("index.html")) {    
    document.links.item(0).style.color = "#FFFF00";
    document.links.item(0).style.borderBottom = "solid 2px white";

}

2 个答案:

答案 0 :(得分:5)

根据

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains

仅在FF中支持,这就是为什么你在chrome中得到未定义的错误。

作为页面的开头说明

  

这是一项实验技术,是和谐的一部分(ECMAScript 6)   提案。因为这项技术的规格尚未稳定,   检查兼容性表以了解各种浏览器的用法。另请注意   实验技术的语法和行为是主题   随着规范的变化,在未来版本的浏览器中进行更改。

如果查看底部附近的兼容性表,则仅支持FF

作为替代方案,您可以随时使用

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

if( url.indexOf("index.html") > -1 ) {  }

答案 1 :(得分:3)

编辑,更新(见评论)

尝试

var url = document.URL;
var links = document.getElementsByTagName("a");
// changed `/index.html/.test(url)` , which returned `true`,
// to `/index\.html/.test(url)`,
// escaping `.` in `/index.html/.test(url)` , 
// appear to "work"  at console , 
// though actually returned a `false` `true` 
// when testing for required string ,
// demonstrated by Derek 朕會功夫 , at comments
if(/index\.html/.test(url)) {    
    document.links.item(0).style.color = "#FFFF00";
    document.links.item(0).style.borderBottom = "solid 2px white";

}