检测浏览器对HTML5新input类型的支持

HTML5新增加了很多input元素类型,比如color,date,datetime,datetime-local,email,month,number,range,search,tel,time,url,week等。

通过以下方法可以检测浏览器是否支持这些新的input类型:

var i = document.createElement(‘input‘);

i.setAttribute(‘type‘, ‘date‘);

//浏览器不支持date类型

if(i.type == ‘text‘){

}

这里为新添加的input元素设置type特性(attribute)为date,如果浏览器支持date类型,则其对应的dom对象的type属性(property)会设置为date,否则会设置为text,这里一定要注意”特性(attribute)”和”属性(property)”的区别。attribute是标签的特性,而property是标签对应的DOM对象的属性。

所以,即使浏览器不支持新的input类型,虽然其DOM对象的type属性被设置为text,但其标签的type特性仍然是原来设置的值,对上面这个栗子来说就是date

i.getAttribute(‘type‘) == ‘date‘; //true

特别注意:

DOM对象属性(property)与HTML标签特性(attribute)

HTML中property与attribute是极易混淆的两个概念。大多数时候这两个单词都翻译为“属性”,为了区分二者,一般将property翻译为”属性”,attribute翻译为”特性”。

每一个HTML标签(tag)都对应一个DOM接口HTMLXxxElement,比如Span标签对应的是HTMLSpanElement。这些标签的DOM接口都继承自HTMLElement接口,而HTMLElement又继承自Element。我们知道所有的标签都是一个元素结点,因此Element接口又继承自Node接口。其实HTML文档树中的所有东西都是结点,只不过有不同的结点类型而已。

property就是DOM对象的属性,就像普通的javascript对象的属性一样一样的,因为DOM对象就是一个地道的javascript对象,也有自己的原型链。
而attribute则是HTML标签的特性,比如

<div id="div1" title="title1">test<div>

这里id和title是HTML标签div的特性,虽然对应的DOM对象HTMLDivElement也有这两个属性,但它们却是完全不一样的东西。有些特性与属性是同步的。

HTML标签的attribute以类数组的形式存储在对应DOM对象的属性attributes中,attributes属性的类型为NamedNodeMap对象。
DOM对象提供了方法setAttribute,getAttribute和removeAttribute来操纵HTML标签的特性。

DOMString  getAttribute(in DOMString name);

void    setAttribute(in DOMString name, in DOMString value) raises(DOMException);

HTML标签attribute的名字和值都必须为字符串类型,而DOM对象的property没有此限制,可以是任何类型。

有些HTML标签的attribute有对应的DOM对象property,但它们的取值却不一定是相同的。一般来说相对应的attribute与property其名字是一样的,但是class特性有所不同,因为class在javascript中为关键字,所以其所对应的property名字为className。

有些简单的特性,比如id,两者的取值是一样的。

var id1=elem.id;

var id2=elem.getAttribute(‘id‘);

但对于input的value,使用getAttribute获取的永远是写HTML标签时指定的那个值,而value属性则获取到的是input当前输入的值。
而另一些特性比如checked,只要checked特性存在,无论其值是什么,DOM对象的checked属性的值都是true。这里checked属性已经不是字符串而是布尔类型了。

还有一些特性比如style和onclick,其对应的DOM属性完全是返回一个对象了,比如elem.style属性就返回一个CSSStyleDeclaration对象。

HTML自定义attribute没有对应的DOM对象property。

时间: 2024-10-11 22:45:55

检测浏览器对HTML5新input类型的支持的相关文章

HTML5中新增的语义化标签,及在IE5.5~9(IE9已经开始支持部分HTML5新标签了)支持这些新标签的兼容性处理。

一.前言 本文将介绍HTML5中新增的语义化标签,及在IE5.5~9(IE9已经开始支持部分HTML5新标签了)支持这些新标签的兼容性处理. 目录一坨: 二.语义化标签:article.aside.time.mark.section.header.footer.hgroup.progress.figure.figcaption.nav.meter.output.details.summary.ruby和main   三.让IE5.5~9支持HTML5新标签 1. IE5.5~8下对于不支持的标签

【HTML5】input类型

* email <input type="email" name="user_email" /> * url <input type="url" name="user_url" /> * number <input type="number" name="points" min="1" max="10" /> *

怎样让老浏览器兼容html5新标签

CSS样式设置默认样式: <style> article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } </style> JS中: <!--[if lt IE 9]> <script type="text/javascript"> var e=(&quo

html5,各种input类型的值设定

datetime-local:'YYYY-MM-DDThh:mm:ss.ms' 如 datetimelocalObject.value=YYYY-MM-DDThh:mm:ss.ms date : 'yyyy-MM-dd'

使用 HTML5 input 类型提升移动端输入体验(键盘)

在最近的项目中,策划老是要求我们弹出各种类型的键盘,特别是在iOS下,例如输入帐号的时候,不应该支持输入中文,该输入纯数字的时候就应该谈数字键盘等.个人觉得这些都是我们平时开发很少意识到的,虽然有些刁钻,但都是为了用户体验,为了我们的产品,于是便在网上找了一些资料,在此与各位朋友分享: 在过去的几年里,在移动设备上浏览网页已变得难以置信的受欢迎. 但是这些设备上的浏览体验,有时遗留很多的有待改进.当涉及到填写表单时,这一点尤为明显.幸运的是,HTML5规范引入了许多新input类型,使得在移动设

使用 HTML5 input 类型提升移动端输入体验

在过去的几年里,在移动设备上浏览网页已变得难以置信的受欢迎. 但是这些设备上的浏览体验,有时遗留很多的有待改进.当涉及到填写表单时,这一点尤为明显.幸运的是,HTML5规范引入了许多新input类型,使得在移动设备上,用户更容易填写的你的网页表单. 这是一个相当棒的进展,移动浏览器厂商拿起新的HTML5 input类型,并使用它们来显示定制过的键盘布局,使用户更容易输入数据. 在本文中,你将学到8种已经在HTML5中引入的新input类型. 注意: 本文中,iOS的屏幕截图使用iPhone5和S

使用 HTML5 input 类型提升移动端输入体验(转翻译)

在过去的几年里,在移动设备上浏览网页已变得难以置信的受欢迎. 但是这些设备上的浏览体验,有时遗留很多的有待改进.当涉及到填写表单时,这一点尤为明显.幸运的是,HTML5规范引入了许多新input类型,使得在移动设备上,用户更容易填写的你的网页表单. 这是一个相当棒的进展,移动浏览器厂商拿起新的HTML5 input类型,并使用它们来显示定制过的键盘布局,使用户更容易输入数据. 在本文中,你将学到8种已经在HTML5中引入的新input类型. AndyLam翻译于 1年前 0人顶 顶 翻译的不错哦

浏览器对HTML5特性检测工具Modernizr

最近在做公司移动端运营的项目,需求中多处地方都会涉及动画.相信很多前端开发都会有这种感触,对CSS3中的动画属性很熟悉,但是由于对动画运动过程的理解不深入,经常只能望而止步.CSS3中动画这在Web页面中具有点睛之笔,让人眼前一亮,这段时间我会抽空来整理关于动画这块的知识点,希望能在总结的同时分享给有需要的朋友们,如果有什么好的建议和想法欢迎相互交流学习.无论是动画还是别的CSS3的新特性在移动端都能得到很好的支持,可是对于PC端来说,有那么些不太友好的浏览器(比如万恶的IE9-)无法支持CSS

HTML5学习笔记之Input类型

Input类型——email email类型用于包含email地址的输入域,在输入地址时会自动验证email域的值 例:Email:<input type="email" name="user_email"> 在提交时会自动检测输入内容是否合法 Input类型——url url类型用于应该包含url地址的输入域,在提交时会自动检测url域的值 例:url:<input type="url" name="user_url