前端 HTML5 面试官和应试者一问一答
哪吒人生信条:如果你所学的东西 处于喜欢 才会有强大的动力支撑。
每天学习编程,让你离梦想更新一步,感谢不负每一份热爱编程的程序员,不论知识点多么奇葩,和我一起,让那一颗四处流荡的心定下来,一直走下去,加油,2021
加油!欢迎关注加我vx:xiaoda0423
,欢迎点赞、收藏和评论
不要害怕做梦,但是呢,也不要光做梦,要做一个实干家,而不是空谈家,求真力行。
前言
希望可以通过这篇文章,能够给你得到帮助。(感谢一键三连)
1.`HTML5`表单增加的输入类型
url
类型:专门为输入url
地址定义的文本库,在验证输入文本的格式时,如果文本框中的的内容不符合url
地址的格式,会提示验证错误。email
类型:专门是为输入email
地址定义的文本框,在验证输入的文本的格式时,如果文本框中的内容不符合email
地址的格式,会提示验证错误。在email
类型的input
元素还有一个multiple
属性,表示在该文本框中可输入用逗号隔开的多个邮件地址。range
类型:用于把输入框显示为滑动条,可以作为某一特定范围内的数值选择器。min
和max
特性,分别表示范围的最小值,默认为 0,范围的最大值,默认为 100.range
类型有一个step
特性,表示拖动的步长,默认为 1。number
类型:专门为输入特定的数字而定义的文本框,具有min,max,step
特性。tel
类型:专门为输入电话号码而定义的文本框,没有特殊的验证规则。search
类型:专门为输入搜索引擎关键词定义的文本框,没有特殊的验证规则。color
类型:color
类型的input
元素默认会提供一个颜色选择器。date
类型:专门用于输入日期的文本框,默认带日期选择器的输入框。month,week,time,datetime,datetime-local
类型的input
元素与date
类型的input
元素类似,提供一个相应的选择器。
2.`HTML5`增加表单的特性以及元素
form
特性在HTML5
中,可以把从属于表单的元素放在任何地方,然后指定该元素的form
特性值为表单的id
,该元素就从属于表单。
formaction
特性:每个表单都会通过action
特性把表单内容提交到另外一个页面,而在html5
中,为不同的“提交”按钮分别添加formaction
特性后,该特性会覆盖表单的action
特性,将表单提交至不同的页面。
formmethod,formenctype,formnovalidate,formtarget
特性:formmethod
特性会覆盖表单的method
特性;formenctype
特性可覆盖表单的enctype
;formnovalidate
特性可覆盖novalidate
特性,formtarget
特性可以覆盖表单的target
特性。
placeholder
特性,向用户提示描述性的信息。
autofocus
特性,用于所有类型的input
元素,当页面加载完成时,可自动获取焦点,每个页面只允许出现一个有autofocus
特性的input
元素,如果设置多个,相当于未指定该行为。
autocomplete
特性:应用于form
元素和输入型的input
元素,用于表单的自动完成。可以autocomplete="on"
,其可以指定"on","off"和" "
不指定。
list
特性和datalist
元素,可以为某个可输入的input
元素定义一个选值列表。
keygen
元素:提供了一种安全的方式来验证用户,该元素有密钥生成的功能,在提交表单时,会分别生成一个私人密钥和一个公共密钥,私人密钥保存在客户端,公共密钥则通过网络传输至服务器。
output
元素用于不同类型的输出,该元素必须从属于某个表单,即是写在表单的内部。
3.`HTML5`如何实现跨域
4.什么是`WebSql`
WebSql
是一个在浏览器客户端的结构关系数据库,是浏览器内的本地RDBMS
关系型数据库管理系统,可以使用SQL
查询。
WebSql
是基于SQLite
的。
5.应用缓存中网络命令的作用是啥
网络命令描述不需要缓存的文件。
6.`Canvas`和`SVG`的区别是什么
SVG
是可缩放矢量图形,它是基于文本的图形语言,使用文本,线条,点等来绘制图像。
a. 一旦Canvas
绘制完成将不能访问像素或操作它,任何使用SVG
绘制的形状都能被记忆和操作,可以被浏览器再次显示。
b. Canvas
对绘制动画和游戏有利,SVG
对创建图像有利。
c. 因为不需要记住之后的事,所以Canvas
运行快,而SVG
需要记录坐标,所以运行慢。
d. 在Canvas
中不能为绘制对象绑定相关事件;在SVG
中可以为绘制对象绑定相关事件。
e. Canvas
绘制出的是位图,因此与分辨率有个,SVG
是矢量图,与分辨率无关。
使用SVG
绘制:
使用Canvas
绘制:
7.本地存储的数据有生命周期吗
本地存储的数据没有生命周期,它将一直存储数据,直到用户从浏览器清除或者使用
javascript
代码移除。
8.表单验证的`API`
required
特性:表示此项的值不能为空,否则无法提交表单。pattern
特性用于input
元素定义一个验证模式。
min,max,step
特性novalidate
用于指定表单或表单内的元素在提交时不验证,form
元素应用novalidate
特性,表示表单中的所有元素在提交时不再验证。validaty
属性用于获取表单元素的ValidityState
对象,该对象包含 8 个方面的验证结果。ValidityState
对象会持续存在,每次获取validity
属性时,返回的是同一个ValidityState
对象。
willValidate
属性,用于获取一个布尔值,表示表单元素是否需要验证,如果表单元素设置了required
特性或pattern
特性,则willValidate
属性为true
,即表单的验证将执行。
validationMessage
属性,用于获取表单元素的错误提示信息
ValidityState
对象,是通过validity
属性获取的,该对象有 8 个属性。
a. valueMissing
属性:必填的表单元素的值为空。如果表单元素设置了required
特性,则表示必填,如果必填项为空,就无法通过表单的验证,valueMissing
属性会返回true
,否则反之。
b. typeMismatch
属性:输入值与type
类型不匹配。html5
增加的表单类型email
等,都包含一个原始的类型验证,如果用户输入的内容与表单类型不符合,typeMismatch
属性将返回true
,否则反之。
c. patternMismatch
属性:输入值与pattern
特性的正则不匹配。表单元素可通过pattern
特性数组正则表达式的验证模式,如果输入内容不符,patternMismatch
将返回true
,否则反之。
d. tooLong
属性:输入的内容大小超过了表单的元素的maxLength
特性限定的字符长度。如果超过tooLong
属性返回true
,否则反之。
e. rangeOverflow
属性:输入的值大于max
特性的值。一般用于填写数值的表单元素,也可能会使用max
特性设置数值范围的最大值,如果输入的数值大于最大值,则rangeOverflow
返回true
,否则反之。
f. rangeUnderflow
属性,输入的值小于min
特性的值,上述雷同。
g. stepMismatch
属性,输入的值不符合step
特性所推算出的规则。不符为true
,否则反之。
h. customError
属性,使用自定义的验证错误提示信息,在有些情况下不适合使用浏览器内置的验证错误提示信息,需要自定义,当输入值不符合语义规则,页面会提示自定义的错误信息。
表单验证的方法
checkValidity()
方法,显式验证方法,每个表单元素都可以调用checkValidity()
方法,它返回一个布尔值,表示是否通过验证。默认情况下,表单的验证发生在表单提交时,如果使用checkValidity()
方法,可以在需要的任何地方验证表单。setCustomValidity()
方法,自定义错误提示信息的方法。当默认的提示错误满足不了需求时,可以通过该方法自定义错误提示。当通过此方法自定义错误提示信息时,元素的validationMessage
属性值会更改为定义的错误提示信息,同时ValidityState
对象的customError
属性值变成true
。
9.`cookie`,`sessionStorage`,`localStorage`
cookie
数据存放在客户的浏览器上,session
数据存放在服务器上。cookie
不是很安全,别人可以分析存放在本地的cookie
并进行cookie
欺骗。session
会在一定时间内保存在服务器上,当访问增加时,会占用较多服务器的资源。为了减轻服务器的负担,应当使用cookie
在适当的情况下。单个
cookie
保存的数据不能超过 4kb,很多浏览器都限制一个站点最多保存 20 个cookie
建议将登陆信息等重要内容存放在
session
中,其他可以存放在cookie
中。cookie
的数量和长度有限制,每个domain
最多只能有 20 条cookie
,每个cookie
的长度不能超过 4kb,否则会被裁掉。安全问题,如果
cookie
被别人拦截了,就可以取得所有的session
信息,即使加密也是没有用,拦截者不需要知道cookie
的意义,只要原样转发cookie
就可以到达目的。有些状态不能保存在客户端。
通过良好的编程,控制保存在
cookie
中的session
对象的大小。通过加密和安全传输技术
ssl
,降低cookie
被破解的可能性。只在
cookie
中存放不敏感数据,即使被盗也不会有重大的损失。控制
cookie
的生命周期,使之不会永远有效,数据偷盗者很可能得到一个过期的cookie
。cookie
最大为 4096 字节,为了兼容性,一般不能超过 4095 字节。每个特定的域名下最多生成 20 个
cookie
ie6
或更低版本最多有 20 个cookie
ie7
和之后的版本最多可以有 50 个cookie
firefox
最多可以有 50 个cookie
Chrome
和Safari
没有硬性限制sessionStorage
用于在本地存储一个会话中的数据,这些数据只有同一个会话中的页面才能访问,当会话结束后,数据也随之销毁,因此sessionStorage
不是一种持久化的本地存储,仅仅是会话级别的存储。localStorage
用于持久化本地存储,除非主动删除数据,否则数据一般是永久不会过期的。localStorage
是为了更大容量的存储设计的,cookie
的大小是有受限制的,并且每次请求一个新页面时,cookie
都会被发送过去,这无形中浪费了带宽,cookie
需要制定作用域,不可以跨域调用。
10.`HTML5`为浏览器提供了哪些数据存储方案
在较高版本的浏览器中,提供了sessionStorage
和globalStorage
,在html5
规范中localStorage
取代了globalStorage
。
应用程序缓存:
离线浏览,让用户可在应用离线时使用它们。
速度,让已缓存资源加载更快。
减少服务器负载,让浏览器将指下载服务器更新过的资源。
HTML5
应用缓存的目的是帮助用户离线浏览页面,如果网络连接不可用,打开的页面就来自浏览器缓存,离线应用缓存可以帮助用户达到这个目的。
本地存储数据持续永久,但是会话存储在浏览器打开时有效,在浏览器关闭时会话重置存储数据。
提升网站的性能:
11.如何实现浏览器内多个标签页之间的通信
在标签页之间,调用localstorage,cookies
等数据存储,可以实现标签页之间的通信。
12.`Web Worker`和`webSocket`的作用
WebSocket
:它是web
应用程序的传输协议,提供了双向的,按序到达的数据流,它是html5
新增的协议,WebSocket
的连接是持久的,它在客户端和服务器之间保持双工连接,服务器的更新可以及时推送到客户端,而不需要客户端以一定的时间间隔去轮询。
Web Worker
:通过worker=new Worker(url)
加载一个javascript
文件,创建一个Worker
,同时返回一个Worker
实例;用worker.postMessage(data)
向Worker
发送数据;绑定worker.onmessage
接收Worker
发送过来的数据;可以使用worker.terminate()
终止一个Worker
的执行。
13. `HTML5`新特性
拖放api
,语义化更好的内容标签,音频,视频,画布,地理api
等,本地离线存储,会话存储,表单控件。
嵌入音频:
嵌入视频:
新增表单属性包括:datalist,datetime,output,keygen,date,month,week,time,number,range,emailurl
提供了很多新的api
,包括Media API, Text Track API, Application Cache API, User Interaction API, Data Transfer API, Command API, Constraint Validation API, History API
14.如何区别`html`和`html5`
用DOCTYPE
声明新增的结构元素和功能元素来区别它们。
HTML5
使用的字符集<meta charset="UTF-8">
15.`HTML5 Canvas`元素有什么用
Canvas
元素用于在网页上绘制图形,该元素标签的强大之处在于可以直接在html
上进行图形操作。
❤️关注+点赞+收藏+评论+转发❤️,原创不易,鼓励笔者创作更好的文章
点赞、收藏和评论
我是Jeskson
(达达前端),感谢各位人才的:点赞、收藏和评论,我们下期见!(如本文内容有地方讲解有误,欢迎指出☞谢谢,一起学习了)
我们下期见!
文章持续更新,可以微信搜一搜「 程序员哆啦 A 梦 」第一时间阅读,回复【资料】有我准备的一线大厂资料,本文 http://www.dadaqianduan.cn/#/ 已经收录
github
收录,欢迎Star
:https://github.com/webVueBlog/WebFamily
版权声明: 本文为 InfoQ 作者【魔王哪吒】的原创文章。
原文链接:【http://xie.infoq.cn/article/a04ed8b862f71b1c3caad1782】。未经作者许可,禁止转载。
评论