Webワーカーはサポートしていますか?
- XMLHttpRequestとコールバック
- ファイルのアップロード
- WebSocket
さまざまなサイトで非常に紛らわしい答えを見つけました。
ご協力いただきありがとうございます...
Webワーカーはサポートしていますか?
さまざまなサイトで非常に紛らわしい答えを見つけました。
ご協力いただきありがとうございます...
疑わしい場合は、テストしてください。私のバージョンの Chromium では、答えは次のとおりです。
ここと下のソース。
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Embedded Web Worker Test</title>
<script type="text/js-worker">
var xmlhttp = 'XMLHttpRequest: ' + ( ( 'function' === typeof XMLHttpRequest ) ? ' YES' : ' NO' )
var file_reader = 'FileReader: ' + ( ( 'function' === typeof FileReader ) ? ' YES' : ' NO' )
var websockets = 'Websockets: ' + ( ( 'function' === typeof WebSocket ) ? ' YES' : ' NO' )
var myVar = "Test results: " + xmlhttp + ", " + file_reader + ", " + websockets;
</script>
<script type="text/javascript">
function log_worker_msg(worker_msg) {
var frag = document.createDocumentFragment();
frag.appendChild(document.createTextNode(worker_msg));
document.querySelector("#worker_log").appendChild(frag);
}
</script>
<script type="text/js-worker">
self.onmessage = function (oEvent) {
self.postMessage(myVar);
};
</script>
<script type="text/javascript">
var oBuilder = new WebKitBlobBuilder() || new MozBlobBuilder();
Array.prototype.forEach.call(document.querySelectorAll("script[type=\"text\/js-worker\"]"), function (oScript) { oBuilder.append(oScript.textContent); });
var obj_url = window.webkitURL.createObjectURL(oBuilder.getBlob()) || window.URL.createObjectURL(oBuilder.getBlob());
document.worker = new Worker(obj_url);
document.worker.onmessage = function (oEvent) {
log_worker_msg( oEvent.data);
};
window.onload = function() { document.worker.postMessage(""); };
</script>
</head>
<body><div id="worker_log"></div></body>
</html>
Webworker サポート テストに重大なエラーが含まれているため、Worker が参照エラーをスローします。BlobBuilder は非推奨です。Blob はブラウザー全体で使用することをお勧めしますが、まだ広くサポートされていません。
XMLHttpRequest ファイル アップロード Websockets に対するサポートをテストするために、埋め込みワーカー テストを修正しました。
修正したソースはこちら。 修正されたソース
function log_worker_msg(worker_msg) {
var frag = document.createDocumentFragment();
frag.appendChild(document.createTextNode(worker_msg));
document.querySelector("#worker_log").appendChild(frag);
}
var aFileParts = ["var xmlhttp = \'XMLHttpRequest: \' + ( ( \'function\' === typeof XMLHttpRequest ) ? \' YES\' : \' NO\' );var file_reader = 'FileReader: ' + ( ( \'function\' === typeof FileReader ) ? \' YES\' : \' NO\' );var websockets = \'Websockets: \' + ( ( \'function\' === typeof WebSocket ) ? \' YES\' : \' NO\' );var myVar = \"Test results: \" + xmlhttp + \", \" + file_reader + \", \" + websockets;self.onmessage=function(oEvent){self.postMessage(myVar)};"];
var oBuilder = new Blob(aFileParts, { "type" : "text\/javascript" });
var obj_url = window.webkitURL.createObjectURL(oBuilder) || window.URL.createObjectURL(oBuilder);
document.worker = new Worker(obj_url);
document.worker.onmessage = function (oEvent) {
log_worker_msg( oEvent.data);
};
window.onload = function() { document.worker.postMessage(""); };