Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何知道浏览器是否具有HTML5表单的特定表示形式';s元素?_Javascript_Html_Forms_Cross Browser_Fallback - Fatal编程技术网

Javascript 如何知道浏览器是否具有HTML5表单的特定表示形式';s元素?

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

我想使用HTML5的新输入元素,如
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.的很相似。所以我只想评论一下,浏览器可以在不提供界面的情况下支持这个功能