本篇內(nèi)容主要講解“HTML5的Web Workers怎么創(chuàng)建”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“HTML5的Web Workers怎么創(chuàng)建”吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了漳縣免費(fèi)建站歡迎大家使用!
web worker是運(yùn)行在后臺(tái)的JavaScript,不會(huì)影響頁(yè)面的性能。
什么是Web Worker?
當(dāng)在HTML頁(yè)面中執(zhí)行腳本時(shí),頁(yè)面的狀態(tài)是不可響應(yīng)的,直到腳本已完成。
web worker是運(yùn)行在后臺(tái)的JavaScript,獨(dú)立于其他腳本,不會(huì)影響頁(yè)面的性能。您可以繼續(xù)做任何愿意做的事情:點(diǎn)擊,拾取內(nèi)容等等,而此時(shí)web worker在后臺(tái)運(yùn)行。
瀏覽器支持
所有主流瀏覽器均支持web worker,除了Internet Explorer。
HTML5 Web Workers實(shí)例
下面的例子創(chuàng)建了一個(gè)簡(jiǎn)單的web worker,在后臺(tái)計(jì)數(shù):
計(jì)數(shù):
<!DOCTYPE html>
<html>
<身體>
<p>計(jì)數(shù):<output id =“ result”> </ output> </ p>
<button onclick =“ startWorker()”>開(kāi)始工作者</ button>
<button onclick =“ stopWorker()”>停止Worker </ button>
<br /> <br />
<腳本>
var w;
函數(shù)startWorker()
{
if(typeof(Worker)!==“未定義”)
{
if(typeof(w)==“ undefined”)
{
w = new Worker(“ / example / html5 / demo_workers.js”);
}
w.onmessage =函數(shù)(事件){
document.getElementById(“ result”)。innerHTML = event.data;
};
}
別的
{
document.getElementById(“ result”)。innerHTML =“對(duì)不起,您的瀏覽器不支持Web Workers ...”;
}
}
函數(shù)stopWorker()
{
w.terminate();
}
</ script>
</ body>
</ html>
檢測(cè)Web Worker支持
在創(chuàng)建web worker之前,請(qǐng)檢測(cè)用戶(hù)的瀏覽器是否支持它:
if(typeof(Worker)!==“未定義”)
{
// 是的!網(wǎng)絡(luò)工作者支持!
//一些代碼.....
}
別的
{
// 對(duì)不起!不支持Web Worker。
}
創(chuàng)建網(wǎng)絡(luò)工作者
現(xiàn)在,讓我們?cè)谝粋€(gè)外部JavaScript中創(chuàng)建我們的web worker。
在這里,我們創(chuàng)建了計(jì)數(shù)腳本。該腳本存儲(chǔ)于“ demo_workers.js”文件中:
var i = 0;
函數(shù)timedCount()
{
i = i + 1;
postMessage(i);
setTimeout(“ timedCount()”,500);
}
timedCount();
以上代碼中重要的部分是 postMessage() 方法-它用于向HTML頁(yè)面?zhèn)骰匾欢蜗ⅰ?/p>
注釋?zhuān)?web worker通常不使用如此簡(jiǎn)單的腳本,或者用于更耗費(fèi)CPU資源的任務(wù)。
創(chuàng)建Web Worker對(duì)象
我們已經(jīng)有了web worker文件,現(xiàn)在我們需要從HTML頁(yè)面調(diào)用它。
下面的代碼檢測(cè)是否存在worker,如果不存在,-它會(huì)創(chuàng)建一個(gè)新的web worker對(duì)象,然后運(yùn)行“ demo_workers.js”
if(typeof(w)==“ undefined”)
{
w = new Worker(“ demo_workers.js”);
}
然后我們就可以從web worker發(fā)生和接收消息了。
向web worker添加一個(gè)“ onmessage”事件監(jiān)聽(tīng)器:
w.onmessage =功能(事件){
document.getElementById(“ result”)。innerHTML = event.data;
};
當(dāng)web worker傳遞消息時(shí),會(huì)執(zhí)行事件監(jiān)聽(tīng)器中的代碼。
終止網(wǎng)絡(luò)工作者
當(dāng)我們創(chuàng)建web worker對(duì)象后,它會(huì)繼續(xù)監(jiān)聽(tīng)消息(即使在外部腳本完成之后)直到其被終止為止。
如果終止網(wǎng)絡(luò)工作人員,并釋放瀏覽器/計(jì)算機(jī)資源,請(qǐng)使用Terminate()方法:
w.terminate();
完整的Web Worker實(shí)例代碼
我們已經(jīng)看到了.js文件中的Worker代碼。下面是HTML頁(yè)面的代碼:
實(shí)例
<!DOCTYPE html>
<html>
<身體>
<p>計(jì)數(shù):<output id =“ result”> </ output> </ p>
<button onclick =“ startWorker()”>開(kāi)始工作者</ button>
<button onclick =“ stopWorker()”>停止工作者</ button>
<br /> <br />
<腳本>
var w;
函數(shù)startWorker()
{
if(typeof(Worker)!==“未定義”)
{
if(typeof(w)==“ undefined”)
{
w = new Worker(“ demo_workers.js”);
}
w.onmessage =函數(shù)(事件){
document.getElementById(“ result”)。innerHTML = event.data;
};
}
別的
{
document.getElementById(“ result”)。innerHTML =“對(duì)不起,您的瀏覽器
不支持Web Workers ...”;
}
}
函數(shù)stopWorker()
{
w.terminate();
}
</ script>
</ body>
</ html>
網(wǎng)絡(luò)工作者和DOM
由于web worker位于外部文件中,它們無(wú)法訪問(wèn)下例JavaScript對(duì)象:
window對(duì)象
document對(duì)象
parent對(duì)象
到此,相信大家對(duì)“HTML5的Web Workers怎么創(chuàng)建”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站標(biāo)題:HTML5的WebWorkers怎么創(chuàng)建
瀏覽路徑:http://vcdvsql.cn/article8/pehcip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、云服務(wù)器、ChatGPT、網(wǎng)站維護(hù)、網(wǎng)站策劃、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)