我正在尝试测试特定浏览器上的可用内容(以JavaScript为单位)。
如果我只是输入了这个例子:
function checksetAttribute(){
if(document.getElementById("blar").setAttribute("name","blarDiv")){
alert("Your browser supports it.");
}
else{
alert("Your browser does not support it.");
}
}
这会回复关于财产是否有效的真实答案吗?
答案 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.getElementById
和setAttribute
,它只会设置name属性。作为该方法returns void
(这是假的),它将始终警告"Your browser does not support it."
- 除非抛出异常。
它既不会检查浏览器是否支持name
属性。