HTML5のWebワーカー
ウェブワーカーは、バックグラウンドでJavaScriptを実行して、ページのパフォーマンスには影響しません。
ウェブワーカーは何ですか?
HTMLページのスクリプトを実行する場合、ページの状態がスクリプトが完了するまで応答しません。
他のスクリプトとは無関係に、バックグラウンドでJavaScriptを実行するウェブワーカーは、ページのパフォーマンスには影響しません。 あなたが行うには喜んで何でもし続けることができます:ウェブワーカーがバックグラウンドで実行される時など、コンテンツをクリックして選択します。
ブラウザのサポート
Internet Explorerの10、Firefoxの、クロム、SafariやOperaのサポートWebワーカー。
HTML5のWebワーカーの例
次の例では、バックグラウンドでカウントし、単純なWebワーカーを作成します。
demo_workers.jsファイルコード:
関数timedCount()
{
私=私は1を+。
postMessage(ⅰ);
setTimeout( "timedCount()"、500);
}
timedCount()。
ブラウザがWebワーカーをサポートするかどうかを検出します
ウェブワーカーを作成する前に、ユーザーのブラウザがサポートして確認してください。
{
//はい!のWebワーカーをサポート!
//いくつかのコード.....
}
ほかに
{
//申し訳ありません!のWebワーカーがサポートされていません。
}
ウェブワーカーファイルを作成します。
それでは、外部JavaScriptで弊社のWebワーカーを作成してみましょう。
ここでは、スクリプトの数を作成しました。 スクリプトは「demo_workers.js」ファイルに格納されます。
関数timedCount()
{
私=私は1を+。
postMessage(ⅰ);
setTimeout( "timedCount()"、500);
}
timedCount()。
コードの重要な部分は、上記のpostMessage()メソッドである - いくつかのHTMLページのニュースを返すために使用されます。
注:ウェブワーカーは、一般的に、簡単なスクリプトのため、より多くのCPUを集中的に使用するタスクのために使用されていません。
ウェブワーカーオブジェクトを作成します。
我々はすでにウェブワーカーファイルを持っている、そして今、私たちは、HTMLページからそれを呼び出す必要があります。
何がある場合は、次のコードでは、労働者の存在を検出していない - それは、新しいWebワーカーオブジェクトを作成し、「demo_workers.js」のコードを実行します。
{
w=new Worker("demo_workers.js");
}
我々は、次に行われると、ウェブ作業者からのメッセージを受信することができます。
「onMessageの「イベントリスナーのWebワーカーに追加します。
。のdocument.getElementById( "結果")innerHTMLの= event.data。
};
ウェブワーカー終了
我々は、Webワーカーオブジェクトを作成すると、それがによって終了されるまで、(たとえ外部スクリプトの完了後に)メッセージを受信し続けます。
ウェブワーカーを終了し、ブラウザ/コンピュータリソースを解放し、終了()メソッドを使用するには:
完全なWebワーカーのコード例
私たちは、.jsファイルワーカーのコードを見てきました。 ここでは、コードのHTMLページは、次のとおりです。
例
<HTML>
<ヘッド>
<メタ文字セット= "UTF-8">
<タイトル>このチュートリアル(w3big.com)</タイトル>
</ HEAD>
<ボディ>
<P>カウント:<出力id = "結果"> </出力> </ P>
仕事をする<ボタンのonclick = "startWorker()"> </ button>の
<ボタンのonclick = "stopWorkerは()"> </ button>の停止しました
<P> <strong>注:IEブラウザの</ strong>ののInternet Explorer 9およびそれ以前のバージョン</ P>のWebワーカーをサポートしていません。
<スクリプト>
varの各ワット。
機能startWorker(){
場合(typeof演算(労働者)!== "未定義"){
場合(typeof演算(ワット)== "未定義"){
新しい労働者=ワット( "demo_workers.js");
}
w.onmessage =関数(イベント){
。のdocument.getElementById( "結果")innerHTMLの= event.data。
};
}エルス{
document.getElementById( "結果")innerHTMLの= "申し訳ありませんが、お使いのブラウザは、Webワーカーをサポートしていません...";
}
}
関数stopWorker()
{
w.terminate()。
ワット=未定義。
}
</スクリプト>
</ BODY>
</ HTML>
»をお試しください
ウェブワーカーとDOM
外部ファイルでのWebワーカーので、JavaScriptは、以下の例をオブジェクトにアクセスすることはできません。
- ウィンドウオブジェクト
- ドキュメントオブジェクト
- 親オブジェクト