Javascript 如何知道浏览器是否具有HTML5表单的特定表示形式';s元素?
我想使用HTML5的新输入元素,如Javascript 如何知道浏览器是否具有HTML5表单的特定表示形式';s元素?,javascript,html,forms,cross-browser,fallback,Javascript,Html,Forms,Cross Browser,Fallback,我想使用HTML5的新输入元素,如type=“number”,type=“color”,等等 Google Chrome通过定制的用户界面处理这些问题,这项工作做得很好。 与此相反,Firefox让事情变得更加基本,让那些人保持了通常的type=“text”界面外观 我想检测一下浏览器什么时候没有像谷歌那样提供额外的增强功能,这样我就可以自己提供了 如何做到这一点?您可以通过创建新类型并查看其类型来检测浏览器是否支持新类型;如果支持HTML5类型(数字,颜色,等等),如果不支持,则为文本: va
type=“number”
,type=“color”
,等等
Google Chrome通过定制的用户界面处理这些问题,这项工作做得很好。
与此相反,Firefox让事情变得更加基本,让那些人保持了通常的
type=“text”
界面外观
我想检测一下浏览器什么时候没有像谷歌那样提供额外的增强功能,这样我就可以自己提供了
如何做到这一点?您可以通过创建新类型并查看其类型来检测浏览器是否支持新类型;如果支持HTML5类型(
数字
,颜色
,等等),如果不支持,则为文本
:
var input = document.createElement('input');
input.setAttribute('type', 'number');
if (input.type === 'number') {
// Supported
}
else {
// Not supported
}
通过创建新类型并查看其类型,可以检测浏览器是否支持新类型;如果支持HTML5类型(
数字
,颜色
,等等),如果不支持,则为文本
:
var input = document.createElement('input');
input.setAttribute('type', 'number');
if (input.type === 'number') {
// Supported
}
else {
// Not supported
}
通过创建新类型并查看其类型,可以检测浏览器是否支持新类型;如果支持HTML5类型(
数字
,颜色
,等等),如果不支持,则为文本
:
var input = document.createElement('input');
input.setAttribute('type', 'number');
if (input.type === 'number') {
// Supported
}
else {
// Not supported
}
通过创建新类型并查看其类型,可以检测浏览器是否支持新类型;如果支持HTML5类型(
数字
,颜色
,等等),如果不支持,则为文本
:
var input = document.createElement('input');
input.setAttribute('type', 'number');
if (input.type === 'number') {
// Supported
}
else {
// Not supported
}
目前Firefox不支持或,但将在下一个主要版本中提供。要检测是否支持,请使用:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
if (input.type === type) {
return true;
} else {
return false;
}
}
console.log(supportsInput('color') ? 'true' : 'false');
console.log(supportsInput('number') ? 'true' : 'false');
目前Firefox不支持或,但将在下一个主要版本中提供。要检测是否支持,请使用:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
if (input.type === type) {
return true;
} else {
return false;
}
}
console.log(supportsInput('color') ? 'true' : 'false');
console.log(supportsInput('number') ? 'true' : 'false');
目前Firefox不支持或,但将在下一个主要版本中提供。要检测是否支持,请使用:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
if (input.type === type) {
return true;
} else {
return false;
}
}
console.log(supportsInput('color') ? 'true' : 'false');
console.log(supportsInput('number') ? 'true' : 'false');
目前Firefox不支持或,但将在下一个主要版本中提供。要检测是否支持,请使用:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
if (input.type === type) {
return true;
} else {
return false;
}
}
console.log(supportsInput('color') ? 'true' : 'false');
console.log(supportsInput('number') ? 'true' : 'false');
首先:我的FF29beta在Mac上显示了正确的数字和颜色界面 简单的回答是:你无法检测到用户看到了什么。您只能检查API,并假设带有API的浏览器也实现了UI。如果浏览器是standards Compileant,则此假设应为真 因此,最简单的测试是检查内容属性是否也由idl属性反映:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
return (input.type === type);
}
Modernizer测试做了更多的工作来提供更准确的结果,主要是排除旧的webkit浏览器。您可以将新输入类型分为三类:1。简单语义类型(即“搜索”),2。有一些类型具有一些特殊的验证约束(即type=“email”)和3。有些类型具有特殊的UI(和验证约束),但也具有增强的值清理算法
这意味着您可以通过执行以下操作来增强检测能力:
var constrainTypes = {email: 1, url: 1};
var widgetTypes = {date: 1, month: 1, range: 1, color: 1, week: 1, number: 1};
function supportsInput(type) {
var input = document.createElement('input');
var ret = false;
var val = '!#';
input.setAttribute('type', type);
if (input.type === type) {
input.value = val;
if (constrainTypes[type]) {
ret = input.checkValidity && !input.checkValidity();
} else if (widgetTypes[type]) {
ret = input.value != val;
} else {
ret = true;
}
}
return ret;
}
首先:我的FF29beta在Mac上显示了正确的数字和颜色界面 简单的回答是:你无法检测到用户看到了什么。您只能检查API,并假设带有API的浏览器也实现了UI。如果浏览器是standards Compileant,则此假设应为真 因此,最简单的测试是检查内容属性是否也由idl属性反映:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
return (input.type === type);
}
Modernizer测试做了更多的工作来提供更准确的结果,主要是排除旧的webkit浏览器。您可以将新输入类型分为三类:1。简单语义类型(即“搜索”),2。有一些类型具有一些特殊的验证约束(即type=“email”)和3。有些类型具有特殊的UI(和验证约束),但也具有增强的值清理算法
这意味着您可以通过执行以下操作来增强检测能力:
var constrainTypes = {email: 1, url: 1};
var widgetTypes = {date: 1, month: 1, range: 1, color: 1, week: 1, number: 1};
function supportsInput(type) {
var input = document.createElement('input');
var ret = false;
var val = '!#';
input.setAttribute('type', type);
if (input.type === type) {
input.value = val;
if (constrainTypes[type]) {
ret = input.checkValidity && !input.checkValidity();
} else if (widgetTypes[type]) {
ret = input.value != val;
} else {
ret = true;
}
}
return ret;
}
首先:我的FF29beta在Mac上显示了正确的数字和颜色界面 简单的回答是:你无法检测到用户看到了什么。您只能检查API,并假设带有API的浏览器也实现了UI。如果浏览器是standards Compileant,则此假设应为真 因此,最简单的测试是检查内容属性是否也由idl属性反映:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
return (input.type === type);
}
Modernizer测试做了更多的工作来提供更准确的结果,主要是排除旧的webkit浏览器。您可以将新输入类型分为三类:1。简单语义类型(即“搜索”),2。有一些类型具有一些特殊的验证约束(即type=“email”)和3。有些类型具有特殊的UI(和验证约束),但也具有增强的值清理算法
这意味着您可以通过执行以下操作来增强检测能力:
var constrainTypes = {email: 1, url: 1};
var widgetTypes = {date: 1, month: 1, range: 1, color: 1, week: 1, number: 1};
function supportsInput(type) {
var input = document.createElement('input');
var ret = false;
var val = '!#';
input.setAttribute('type', type);
if (input.type === type) {
input.value = val;
if (constrainTypes[type]) {
ret = input.checkValidity && !input.checkValidity();
} else if (widgetTypes[type]) {
ret = input.value != val;
} else {
ret = true;
}
}
return ret;
}
首先:我的FF29beta在Mac上显示了正确的数字和颜色界面 简单的回答是:你无法检测到用户看到了什么。您只能检查API,并假设带有API的浏览器也实现了UI。如果浏览器是standards Compileant,则此假设应为真 因此,最简单的测试是检查内容属性是否也由idl属性反映:
function supportsInput(type) {
var input = document.createElement('input');
input.setAttribute('type', type);
return (input.type === type);
}
Modernizer测试做了更多的工作来提供更准确的结果,主要是排除旧的webkit浏览器。您可以将新输入类型分为三类:1。简单语义类型(即“搜索”),2。有一些类型具有一些特殊的验证约束(即type=“email”)和3。有些类型具有特殊的UI(和验证约束),但也具有增强的值清理算法
这意味着您可以通过执行以下操作来增强检测能力:
var constrainTypes = {email: 1, url: 1};
var widgetTypes = {date: 1, month: 1, range: 1, color: 1, week: 1, number: 1};
function supportsInput(type) {
var input = document.createElement('input');
var ret = false;
var val = '!#';
input.setAttribute('type', type);
if (input.type === type) {
input.value = val;
if (constrainTypes[type]) {
ret = input.checkValidity && !input.checkValidity();
} else if (widgetTypes[type]) {
ret = input.value != val;
} else {
ret = true;
}
}
return ret;
}
你的答案和T.J.的相似。所以我就评论一下,你的答案和T.J.的很相似。所以我就评论一下,你的答案和T.J.的很相似。所以我就评论一下,你的答案和T.J.的很相似。所以我只想评论一下,浏览器可以在不提供界面的情况下支持这个功能