我知道ff与ie属性'class'之间存在差异。
我想把global.js放在那样的东西:
function GetVarByBrowser()
{
if (navigator.appName == 'Microsoft Internet Explorer')
{
var getClass= 'className';
}
else
{
var getClass= 'class';
}
}
在页面中我添加了这个:
ElementServer.setAttribute(GetVarByBrowser(), 'server');
我怎样才能使它有效?
答案 0 :(得分:2)
无需全局变量。让函数返回值:
function GetVarByBrowser()
{
if (navigator.appName == 'Microsoft Internet Explorer')
{
return 'className';
}
else
{
return 'class';
}
}
然而,由于多种原因,这是一种不完美的浏览器检测方法。您是否考虑使用像jQuery这样的库来自动处理这样的怪癖?或者你想自己学习(这是完美的,值得称道的)?
答案 1 :(得分:2)
最好只使用x.className
getter / setter属性,这样可以避免需要调用属性函数,并且适用于所有浏览器。
答案 2 :(得分:0)
绝不使用浏览器检测!这将在IE8中以标准模式中断!
在这种情况下没有理由使用setAttribute
。 e.className = 'some_class'
适用于所有浏览器。
答案 3 :(得分:-1)
我建议采用略有不同的方法:
var setClassAttribute(e, value);
if (navigator.appName == 'Microsoft Internet Explorer')
{
setClassAttribute = function(e, value) {
e.setAttribute('className', value);
}
}
else
{
setClassAttribute = function(e, value) {
e.setAttribute('class', value);
}
}
现在您可以像这样使用这个新功能:
setClassAttribute(ElementServer, 'server');