如何检查浏览器是否支持<input type="time" />?

15

在HTML、JavaScript或Razor中是否有方法来检测浏览器是否支持<input type="time" />元素?

提前感谢。

2个回答

24

当将无效值分配给元素的.type属性时,这些值将被拒绝。

try {
    var input = document.createElement("input");

    input.type = "time";

    if (input.type === "time") {
        console.log("supported");
    } else {
        console.log("not supported");
    }
} catch(e) {
    console.log("not supported");
}
如果存在我不知道的浏览器问题,那么使用.innerHTML应该可以达到相同的效果。
var div = document.createElement("div");
div.innerHTML = "<input type='time'>";

if (div.firstChild.type === "time")
    console.log("supported");
else
    console.log("not supported");

2
@cookiemonster:我并不是说这不是一个好答案。抛出异常让我觉得浏览器不支持它。:-) 我很惊讶(但也很高兴)发现在抛出异常和获取“text”之间,似乎可以进行检测。我想知道为什么Modernizr说他们不能检测它 - T.J. Crowder
@T.J.Crowder:是的,我明白你的意思。 :-) - cookie monster
2
@T.J.Crowder:你链接的那部分是说“Modernizr 无法检测到日期输入是否创建了日期选择器、颜色输入是否创建了颜色选择器等等,它将检测到输入值是否根据规范进行了清理。”,就我理解而言,这意味着 Modernizer 不能保证 color 输入实际上会被渲染为颜色选择器,但它可以检测出 color 是否是有效的 type 值(基于卫生处理)。 - Felix Kling
我和Felix的理解一样...它可以检测到字段,但无法确定浏览器对该字段的处理方式。 - DA.
1
@cookiemonster 哦,好的。所以是IE11在IE8模式下玩弄我。在虚拟机上尝试了IE8,就像那样(也可以更改“名称”)。真是个令人困惑的混乱... - MaxArt
显示剩余6条评论

0

7
最好进行特性测试而不是浏览器测试。 - DA.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接