检查是否有效

时间:2012-05-30 01:29:05

标签: javascript testing cross-browser

我正在尝试测试特定浏览器上的可用内容(以JavaScript为单位)。

如果我只是输入了这个例子:

function checksetAttribute(){
    if(document.getElementById("blar").setAttribute("name","blarDiv")){
        alert("Your browser supports it.");
    }
    else{
        alert("Your browser does not support it.");
    }
}

这会回复关于财产是否有效的真实答案吗?

3 个答案:

答案 0 :(得分:2)

如果你想测试某个属性是否有效,而不是setAttribute是否有效,那么这是错误的方法,因为setAttribute总是返回undefined(== false)。相反,测试元素是否具有属性名称作为键 - 并使用新元素而不是从DOM中提取的元素,因为DOM中的元素可能已被修改。

function attributeWorks(attr, within) {
    return document.createElement(within || 'div').hasOwnProperty(attr);
}

我添加了within参数,因为某些属性仅存在于某些类型的元素上:例如,如果您始终针对<div>进行测试,则该函数将返回false for { {1}}。

如果你想测试href函数是否有效,这仍然是错误的方法,因为如果没有实现setAttribute,尝试执行它会抛出错误而不是返回false。我们可以使用与上面相同的方法,简化我们已经知道的参数:

setAttribute

答案 1 :(得分:0)

我猜你的代码如果不支持“setAttribute”就会失败。

var a = document.createElement("div");
if(a.setAttribute){
    alert("VERY SUPPORTED");
}else{
    alert("Not supported");
}

这将检查dom元素上的setAttribute方法是否可用。

答案 2 :(得分:0)

没有。假设浏览器支持document.getElementByIdsetAttribute,它只会设置name属性。作为该方法returns void(这是假的),它将始终警告"Your browser does not support it." - 除非抛出异常。

它既不会检查浏览器是否支持name属性。