概要
blob:
Chrome 8以降、Firefox 6以降、Safari 6.0以降、Opera15以降の場合
data:application/javascript
Opera10.60-12用
eval
それ以外の場合(IE 10+)
URL.createObjectURL(<Blob blob>)
文字列からWebワーカーを作成するために使用できます。BLOBは、非推奨のBlobBuilder
APIまたはコンストラクターを使用して作成できます。Blob
デモ:http://jsfiddle.net/uqcFM/49/
window.URL = window.URL || window.webkitURL;
var response = "self.onmessage=function(e){postMessage('Worker: '+e.data);}";
var blob;
try {
blob = new Blob([response], {type: 'application/javascript'});
} catch (e) {
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
blob = new BlobBuilder();
blob.append(response);
blob = blob.getBlob();
}
var worker = new Worker(URL.createObjectURL(blob));
worker.onmessage = function(e) {
alert('Response: ' + e.data);
};
worker.postMessage('Test');
互換性
Webワーカーは、次のブラウザーソースでサポートされています。
- Chrome 3
- Firefox 3.5
- IE 10
- Opera 10.60
- サファリ4
このメソッドのサポートは、Blob
APIとメソッドのサポートに基づいていますURL.createObjectUrl
。Blob
互換性:
- Chrome 8以降(
WebKitBlobBuilder
)、20以上(Blob
コンストラクター)
- Firefox 6以降(
MozBlobBuilder
)、13以降(Blob
コンストラクター)
- Safari 6+(
Blob
コンストラクター)
IE10はとをサポートMSBlobBuilder
していURL.createObjectURL
ます。ただし、blob:
-URLからWebワーカーを作成しようとすると、SecurityErrorがスローされます。
Opera12はURL
APIをサポートしていません。のこのハックのURL
おかげで、一部のユーザーはオブジェクトの偽のバージョンを持っている可能性があります。browser.js
フォールバック1:データ-URI
Operaは、Worker
コンストラクターへの引数としてdata-URIをサポートしています。注:特殊文字(#
およびなど%
)をエスケープすることを忘れないでください。
var worker = new Worker('data:application/javascript,' +
encodeURIComponent(response) );
デモ:http://jsfiddle.net/uqcFM/37/
フォールバック2:評価
eval
Safari(<6)およびIE10のフォールバックとして使用できます。
self.onmessage = function(e) {
self.onmessage = null;
eval(e.data);
};
var worker = new Worker('Worker-helper.js');
worker.postMessage(response);