4

似乎在这里找不到没有 Modernizr 的解决方案,但我如何检测对特定输入类型的支持,而不是属性?

例如,对于一个属性:

var supportsRequired = 'required' in document.createElement('input')
if (supportsRequired) {
    // support
} else {
    // no support
}

有没有一种简单的方法可以使用输入类型来做到这一点?我不想做的一件事是“交换”不支持的输入类型。有没有类似的东西,只能测试?...

var supportsEmailType = 'email' in input.type
if (supportsEmailType) {
    // support
} else {
    // no support
}

任何帮助表示赞赏。

4

1 回答 1

2

这里

如果您的浏览器支持该特定输入类型,则 type 属性将保留您设置的值。如果您的浏览器不支持该特定输入类型,它将忽略您设置的值,并且 type 属性仍将是“文本”。

这将正确检测是否支持“电子邮件”类型,并且您可以重用该功能来检测其他类型:

if (supportsInputType('email')) {
    // support
} else {
    // no support
}

function supportsInputType(type){
    var i = document.createElement('input');
    i.setAttribute('type', type);
    return i.type === type;
}
于 2013-06-10T19:33:14.133 回答