WebWorkerは、従来のJavaScriptの 'ウィンドウ'コンテキストとは完全に別のスコープで実行されます。スクリプトがWebWorkerとして実行されているかどうかを判断する標準的な方法はありますか?JavaScriptがWebWorkerとして実行されているかどうかを検出するための標準的なメカニズムはありますか?
私が考えることができる最初の 'ハック'は、ワーカーの範囲に 'ウィンドウ'プロパティがあるかどうかを検出することです。存在しない場合、これはWebWorkerとして実行されている可能性があります。
追加のオプションは、標準の 'ウィンドウ'コンテキストに存在しないプロパティを検出することです。クローム14の場合、このリストには、現在含まれています:
FileReaderSync
FileException
WorkerLocation
importScripts
openDatabaseSync
webkitRequestFileSystemSync
webkitResolveLocalFileSystemSyncURL
検出WorkerLocationは、実行可能な候補のように思えるが、これはまだ少しハック感じています。より良い方法がありますか?
EDIT:Hereは、実行中のWebWorkerに存在する「ウィンドウ」にあるプロパティを判別するために使用するJSFiddleです。
「ウィンドウ」を確認できないのはなぜですか? –
'!(typeof window ==" object "&& typeofドキュメント==" object "&& window.document ===ドキュメント)'? –