作者:iwasafool | 来源:互联网 | 2023-09-23 16:29
简介:文章中的知识:CSS3,Web工作线程,本地存储,画布,地理定位,新表单,音频视频第一章:认识HTML5HTML5是最新版本的HTML,它引入了简化的标记,
简介:文章中的知识:CSS3,Web工作线程,本地存储,画布,地理定位,新表单,音频/视频
第一章:认识HTML5
- HTML5是最新版本的HTML,它引入了简化的标记,新的语义和媒体元素,另外要依赖一组支持Web应用的Javascript
- Xhtml不在是Web页面的标准,开发人员和W3C决定还是继续扩展和改进HTML
- 新的,更为简单的HTML5 doctype在较老的浏览器上也得到支持,这些浏览器看到这个doctype时会使用标准模式
JSONP介绍:
- 除了提供HTML和Javascript的服务器外,XMLHttpRequest不允许从其他不同服务器请求数据。这是一个浏览器安全策略,专门设计用来避免恶意的Javascript访问你的Web页面和用户的COOKIE。
- 要访问Web服务托管的数据,除了XMLHttpRequest外,令一种候选方法是JSONP
- 如果HTML和Javascript与数据在同一个机器上,就可以使用XMLHttpRequest
- 如果需要访问由远程服务器上的一个Web服务托管的数据,则要使用JSONP
- JSONP是一种使用
看,下面是输出
manager.js
window.Onload= function(){
var worker = new Worker("/static/js/work.js");
worker.postMessage("ping");
worker.Onmessage= function(event){
var message = "Worker says " + event.data;
document.getElementById("output").innerHTML = message;
};
}
work.js
Onmessage= pingpong;
function pingpong(event) {
if (event.data == "ping") {
postMessage("pong");
}
else {
// intentionally make an error!
1/x;
}
}
关于web工作线程的几个问题
1,创建工作线程时能不能直接传递一个函数,而不是利用一个Javascript文件?这样看起来更容易,而且与Javascript通常的做法更一致:
答:不,不能这样做。因为工作线程的要求之一就是它不能访问DOM,处于同样的原因,也不能访问主浏览器线程的任何状态。如果可以向worker构造函数传入一个函数,这个函数可能好包含DOM或主Javascript代码的引用,这就会违反这个要求。所以,为了避免这个问题,Web工作线程的设计者选择的做法是只能传递一个Javascript url。
2,工作线程可以访问localStorage或做出XMLHttpRequest请求吗?
答:可以
web工作线程介绍:
- 如果没有Web工作线程,Javascript是单线程的,这说明它一次只能做一件事情
- 如果你交给一个Javascript程序太多的工作,你可能会收到一个"slow script"(脚本运行缓慢)的对话框
- Web工作线程在一个单独的线程处理任务,所以主Javascript代码可以继续运行,用户界面可以保持响应
- Web工作线程不能访问页面代码中的函数或DOM
- 页面中的代码与Web工作线程通过消息通信
- 要向一个工作线程发送消息,可以使用postMessage
- 可以通过postMessage向工作线程发送字符串和对象,但不能向工作线程发送函数
- 可以将工作线程的onmessage属性设置为一个处理函数,来接受由工作线程返回的消息
- 工作线程将其onmessage属性设置为一个处理函数,来接收页面代码发送的消息
- 一个工作线程准备发回一个结果,会调用postMessage,并传入结果作为参数
- 工作线程结果封装在一个事件对象中,并置于data属性中
- 可以使用event.target属性查找哪个工作线程发出了消息
- 消息在主页面代码和工作线程之间会复制,而非共享
- 可以使用多个工作线程完成能分解为多个任务的大规模计算,如计算一个分形可视乎图像或对光线跟踪图像
- 每个工作线程在它的线程中运行,所以如果你的计算机有一个多喝处理器,工作线程会并行运行,这会提高计算的速度
- 可以从页面代码调用worker.terminate()来终止一个线程。这会终止工作线程脚本。工作线程还可以调用close()让自己停止工作
- 工作线程还有一个onerror属性。可以把这个属性设置为一个错误处理函数,如果你的工作线程存在一个脚本错误就会调用这个处理函数。
- 要在工作线程文件中包含和使用Javascript库,可以使用importScripts
- 工作线程不能访问DOM或主代码中的函数,但是可以使用XMLHttpRequest和本地存储。