gpt4 book ai didi

javascript - 为IE6/其他浏览器运行不同的JS

转载 作者:行者123 更新时间:2023-11-30 09:06:25 25 4
gpt4 key购买 nike

我有一些代码:

document.getElementById("gD" + gDay + gMonth + gYear).setAttribute("class", "gDay gDayHover");

这适用于所有现代浏览器,但不适用于 IE6。 IE6 需要:

document.getElementById("gD" + gDay + gMonth + gYear).setAttribute("className", "gDay gDayHover");

我要有另一个变量:

var addOnClassAtt;

设置为“”或“名称”,以便我可以运行单行:

document.getElementById("gD" + gDay + gMonth + gYear).setAttribute("class" + addOnClassAtt, "gDay gDayHover");

我如何确定用户运行的浏览器是否需要 className 而不是 class?我宁愿避开浏览器检测,而是使用初始 try catch 类型的方法来设置它,但如果这不可能,最好的方法是什么?

最佳答案

在大多数情况下,您最好进行功能检测而不是浏览器检测。 Javascript 中的特征检测比浏览器检测更容易、更可靠。

在这种特殊情况下,您最好像这样设置类:

document.getElementById(...).className = "gDay gDayHover";

此代码应适用于所有浏览器,包括 IE6。

你遇到这个问题的原因是类属性在 DOM 中被称为 className

这是因为单词 class 是 JavaScript 中的保留字,所以在 DOM 中使用它在某些情况下可能会导致歧义,但如您所见,该问题的解决方案最终会导致其他问题问题!

从中吸取的教训是 setAttribute 不是用于设置 class 属性的可靠函数。大多数其他属性应该可以使用 setAttribute,但其他一些属性也可能有问题,因此通常最好使用 DOM 属性。

关于javascript - 为IE6/其他浏览器运行不同的JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com