HTML5之Worker用法
HTML5提供了Worker类用于多线程处理。Worker是在UI主线程中创建,后台执行的一段js脚本,它通过消息与UI线程传递数据。使用Worker就3步:
cheungmine 2011-11-29
第1步:创建一个Worker,需要指定一个js文件,作为Worker线程的执行体:
var worker = new Worker("worker.js");
第2步:给Worker实例指定消息处理函数,只有2个:onmessage ,onerror
worker.onmessage = function (event) {
// update UI here
var t1 = new Date().getTime();
elemById("_time").value = t1 - t0;
elemById("_piValue").value = event.data;
};
worker.onerror = function (event) {
alert(event.message);
};
第3步:给worker发消息:postMessage。
elemById("_time").value = "-";
t0 = new Date().getTime();
worker.postMessage(parseInt(elemById("_num_rects").value));
下面以一个具体的例子来说明Worker的用法。这个例子是用数值积分的方法求pi=(3.1415926....)的。worker.js就是做这个工作。

HTML5主页面js-test.html如下:
如果用户不小心用IE打开了主页面,我们需要提示用户目前IE还干不了这个活,下面的是下载支持HTML5的浏览器页面selbrowser.html:
好,全齐了。把上面3个文件放到同一个目录如:C:/myJSP/test下面:
test/js-test.html
test/worker.js
test/selbrowser.html
使用FireFox直接打开file:///C:/myJSP/test/js-test.html即可。目前FireFox8不支持http://localhost:8080/myJSP/test/js-test.html,会报Could not load domain错误。
但是FireFox Aurora支持,只是Worker计算速度超慢。
目前Chrome不支持Worker直接用file:///C:/myJSP/test/js-test.html方式打开,会报Uncaught Error: SECURITY_ERR: DOM Exception 18。
可以使用Chrome以http://localhost:8080/myJSP/test/js-test.html方式打开。需要建一个本地http server,如tomcat。
Opera两种方式都支持。
分享到:
相关推荐
除了Web Worker,HTML5还引入了另一个与之相关的API——FileSystem API,它提供了在浏览器中读写文件系统的功能,这在某些场景下与Web Worker配合使用可以实现更强大的离线应用。然而,FileSystem API由于安全和隐私...
5. Web Worker的实现方法:可以使用JavaScript创建Web Worker对象,并将JavaScript代码传递给Web Worker对象,然后Web Worker对象将执行JavaScript代码。 6. Web Worker的调试方法:可以使用浏览器的调试工具来调试...
这个压缩包文件“html5worker”很可能包含一个示例代码,用于演示如何在HTML5环境中创建和使用Worker。 HTML5 Worker 分为两种类型:`Worker` 和 `SharedWorker`。Worker 是独占式的,每个Worker只能被一个页面实例...
通过`Worker`对象,主线程可以向Worker发送消息,Worker也会通过`postMessage`方法将结果回传给主线程。 在"HTML5 Web Workers Demo"这个示例中,`index.html`很可能是主页面,它负责创建和管理Web Worker。通常,`...
三、tiny-worker的使用方法 1. 引入tiny-worker库:首先,你需要将tiny-worker库引入到你的项目中。如果是使用npm,可以运行`npm install tiny-worker`;如果是直接在HTML中使用,可以通过CDN链接引入。 2. 创建...
5. **关闭Worker**:当不再需要Worker时,可以使用`worker.terminate()`方法关闭它。 以下是一个简单的Web Worker示例: **worker.js**: ```javascript self.onmessage = function(event) { var data = event....
PDF.js和PDF.worker.js是Mozilla开发的一个开源项目,主要用于在Web浏览器中渲染PDF文档,无需依赖任何第三方插件。这个项目的核心目标是提供...理解其工作原理和使用方法,可以帮助开发者创建功能丰富的PDF阅读应用。
为了解决这个问题,HTML5引入了Web Workers API,它允许在后台线程中执行脚本,从而不阻塞主线程。但Web Workers不能直接访问DOM,这限制了其在处理DOM操作时的应用。`Via.js`,正如标题所言,是一个创新性的库,它...
5. **分发任务**:调用WorkerManager的方法将任务发送给Worker,如`workerManager.postMessage(taskData)`。 6. **接收反馈**:监听`onmessage`事件来接收Worker返回的结果,处理数据。 7. **错误处理**:设置错误...
总之,`pdf.js`和`pdf.worker.js`是实现Web端PDF查看功能的重要工具,它们结合使用能提供流畅且高效的PDF文档展示体验,而无需依赖任何外部插件。对于需要在网页中嵌入PDF的开发者来说,这是一个非常实用的解决方案...
2. 使用`worker.postMessage(data)`方法向Worker发送数据,`data`可以是任意类型,会被序列化为JSON格式。 3. 设置`worker.onmessage = function(event) {...}`来监听Worker发回的消息,`event.data`包含了Worker...
由于Worker线程和主线程不在同一个上下文中,它们之间的通信是通过`postMessage`和`onmessage`方法实现的。`postMessage`用于在主线程和Worker之间发送数据,而`onmessage`则是Worker接收到消息时触发的事件。 在...
下面是一个简单的HTML5 Worker 实例,它展示了如何创建和使用Worker: 1. 首先,创建一个名为`test.js`的Worker脚本文件,内容如下: ```javascript self.addEventListener("message", function(messageHandler) { ...
本文将详细介绍这个React组件的工作原理、使用方法及其在图片编辑场景中的应用。 Web Worker是HTML5引入的一个特性,它允许在浏览器的后台线程中执行脚本,以进行计算密集型或长时间运行的任务,而不影响用户界面的...
18.1 使用Worker创建多线程 589 18.2 与Worker线程进行数据交换 591 18.3 Worker线程嵌套 594 18.4 使用SharedWorker创建共享线程 597 18.5 Promise 603 18.6 本章小结 611 第19章 客户端通信 612 19.1 跨...
PDF.js和PDF.worker.js是两个在前端展示PDF文档时常用的关键JavaScript库,它们是由Mozilla团队开发的开源项目,主要用于在Web浏览器中实现高质量的PDF文档渲染。这个压缩包中的文件很可能包含了这些库的核心代码和...
同时,可以使用`worker.terminate()`或在Worker线程内部调用`close()`方法来终止线程。需要注意的是,终止Worker线程会导致所有未完成的操作被立即停止,没有机会进行清理工作。 下面是一个简单的Web Worker应用...
下面我们将详细介绍几个重要的HTML5 API及其用法: 1. **Canvas API**:Canvas是HTML5中用于动态图形绘制的元素。通过JavaScript,开发者可以绘制2D图形,包括线条、形状、图像处理等。例如,`context.beginPath()`...
4. **现代Web技术集成**:除了基本的HTML5结构,生成器还可能包含JavaScript库(如jQuery)和框架(如Bootstrap),以及Web组件(Web Components)、WebSocket、离线存储(Service Worker)等HTML5新特性。...
防御这两种攻击的方法包括使用X-Frame-Options头部来阻止页面被嵌入到其他网站中,以及通过JavaScript检测顶层窗口是否为自身,以防止页面被框架嵌套。 ### CORJacking CORJacking是一种利用Flash或ActiveX控件的...