如果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";
}
答案 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";
}