目前我有以下代码:
这是在我的 HTML 文档中。
<script language="JavaScript" type="text/javascript" src="workerTest.js"></script>
现在根据我的理解和研究, worker 必须来自外部文件。
所以在我的 workerTest.js 中我有
var iWorker = new Worker('workerTest.js');
我更愿意在我的 workerTest.js 中声明我所有的作品和代码,并且能够根据我从外部文件创建它们的行。
有点像
var iWorker2 = new Worker('scripttagid');
显然上面的代码是错误的,但我希望它能说明我的观点。
这可能吗?如果可以,有人可以指出我正确的方向吗?可能是一些示例代码?
如果这不可能,那么避免大量工作文件的最佳方法是什么。因为会有很多作品。
最佳答案
好吧,有点:
<!-- won't be executed by browser because of the invalid type -->
<script type="text/worker" id="worker-code">
while(true) {
}
</script>
Javascript:
var workerCode = document.getElementById("worker-code").innerHTML;
//Could also just be var workerCode = 'while(true){}';
var BlobBuilder = window.WebKitBlobBuilder || window.MozBlobBuilder || window.OBlobBuilder || window.BlobBuilder,
blobBuilder = new BlobBuilder(),
URL = window.webkitURL || window.URL,
blob, workerURL;
blobBuilder.append(workerCode);
blob = blobBuilder.getBlob("text/javascript");
workerURL = URL.createObjectURL( blob );
var iWorker = new Worker(workerURL);
请注意,您也不需要该元素,只是将代码存储在像 'while(true){}'
这样的字符串中很难维护。
演示:http://jsfiddle.net/pmSSf/ (处理器使用率会激增,但您可以使用该页面,因为它不在 UI 线程中运行)
关于javascript - HTML5 Webworkers - 所有一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728829/