接到了银联的面试通知,在慌忙准备面试的过程中感觉到,H5和CSS3是前端面试的重点考察对象,这段时间一直在恶补前端基础知识,css.html方面的书也看了好几本,这本书看完有段时间了,今天来总结一下,这样才能在脑子里留下东西。
3.1.新增的结构元素:
3.2.新增的其他元素:
contentEditable(允许编辑),designMode(指定整个页面是否可编辑),hidden,spellcheck(拼写检查针对input和textarea),tabindex(敲击tab键让控件获得焦点)
由于canvas的篇幅较长我另外写了一篇博客H5-canvas
1.1播放音频
<video src="movie.ogg" controls="controls">
您的浏览器不支持 video 标签。
video> `
1.2播放视频
<audio src="movie.ogg" controls="controls">
您的浏览器不支持 video 标签。
audio>
这篇博客总结的挺好的我偷一下懒HTML5 - Web存储使用详解(本地存储、会话存储)
首次访问http://todayfightin网站时,他们的交互过程如下:
若再次打开浏览器访问http://todayfightin网站,而且manifest文件没有被修改过,他们的交互过程如下:
若再次打开浏览器访问http://todayfightin网站,manifest文件被修改过,他们的交互过程如下:
1.swapCache方法:用来手工执行本地缓存更新,他只能在applicationCache对象的updateReady事件被触发时调用,若调用swapCache方法的话,本地缓存将被立即更新。因此你可以使用confirm方法让用户选择更新的时机。
h5新增的通信API主要分为两种跨文档消息传输,和webSockets通信
答:跨文档消息传输即可以在不同的网页文档,不同端口,不同域之间进行消息的传递。
答:既然是通信那么肯定分为两部,一方发送,另一方接收,我们可以通过postMessage方法发送消息,通过监听事件message接收消息,示例如下:
//接收消息
window.addEventListener('message', function(e){
// 忽略指定URL地址之外的页面传来的消息
if(e.origin != 'http://ww.blue-butterfly.net'){
return false
}
// 显示消息
alert('从'+e.origin+'那里传来的消息:\n\"'+e.data+"\"")
},false);
// 发送消息
function hello(){
var iframe = window.frame[0];
iframe.postMessage('你好','http://www.blue-butterfly.net/test/')
}
答:通过访问message事件的origin属性获取消息的发送源,通过访问message事件的data属性可以取得消息内容
2.答:WebSockets 是HTML5提供的在web应用程序中客户端与服务器端之间进行的非HTTP的通信机制,它实现了用HTTP通信不容易实现的服务器端的数据推送等智能通信技术,因此受到了高度关注。
答:
1)建立通信连接:WebSocket API本身很简单,将URL字符串作为参数,然后调用WebSocket的构造器来建立与服务器之间的通信连接
var webSocket = new WebSocket('ws://localhost:8005/sockt');
2)通信连接建立好之后就可以进行客户端和服务器端的双向通信了,使用send方法对服务器发送数据,只能发送文本数据,可以使用json对象把js对象转换成文本数据后进行发送`webSocket.send(‘data’);
3)发送完数据就该接收服务器传回的数据了,通过获取onmessage时间句柄来接收服务器传过来的数据
webSocket.onmessage=function(event){
var data = event.data
....
}
4)通过获取onopen事件句柄来监听socket的打开事件
webSocket.onopen=function(event){
//开始通信时的处理
}
5)通过获取onclose事件句柄来监听socket的关闭事件
webSocket.onclose=function(event){
//通信结束时的处理
}
6)最后就是断开连接啦,通过close方法来关闭socket,切断通信连接。
webSocket.close();
另外可以通过读取readyState的属性值来获取webSocket对象的状态。
答: Web Workers用来实现web平台上的多线程处理功能,你可以创建一个不会影响前台处理的后台线程,并且在这个后台线程中创建多个子线程,通过 Web Workers,你可以将耗时较长的处理交给后台去运行,从而解决H5之前因为某个处理耗时较长而跳出一个提示用户脚本运行时间过长,导致用户不得不结束这个处理的尴尬状况。
答:
1)创建后台线程的步骤很简单,只用在Worker类的构造器中,将需要在后台线程中执行的脚本文件的URL地址作为参数,然后创建Worker对象就可以了。var worker = new Worker("worker.js")
注意:在后台线程中是不能访问页面或窗口对象的。
2)可以通过发送和接收消息来与后台线程相互传递数据。通过对Worker对象的onmessage事件句柄的获取可以在后台线程之中接收消息
worker.onmessage=function(event){
// 处理收到的消息
}
3)使用worker对象的postMessage方法对后台线程发送消息
worker.postMessage(message)//与websocket类似
答:self,postMessage,onmessage,importScript(urls),navigator,sessionStorage/localStorage,XMLHttpRequest,Web Workers,setTimeout()/setInterval(),close,eval(),isNaN(),escape()等,object,WebSockets
之前一直觉得这节很难,只是自己不如安逸看罢了,这一节的主要方法就是getCurrentPosition()方法来获得用户的位置。该方法可传入三个参数
getCurrentPosition(onSuccess, onError, option),第一个参数是执行成功的回调函数,第二个是失败执行的回调函数,第三个是一些可选的属性列表。这里写的比较详细