网络工作者支持

Web workers support

本文关键字:支持 工作者 网络      更新时间:2023-09-26

Web worker 支持吗?

  1. XMLHttpRequest 和回调
  2. 文件上传
  3. 网络套接字

我在不同的网站上发现了非常令人困惑的答案。

感谢您的帮助...

如有疑问,请进行测试。我的Chromium版本建议答案是:

  • XMLHttpRequest: Yes
  • 文件上传:是
  • 网络套接字:是

来源在这里和下面。


<!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>

Web 工作者支持测试包含重大错误,这会导致辅助角色抛出引用错误。BlobBuilder 已被弃用,Blob 最好在浏览器范围内使用,但它尚未得到广泛支持。

斑点支持

我已经更正了嵌入式工作线程测试,以测试其支持XMLHttpRequest文件上传网络套接字

更正后的来源在这里。更正的来源

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(""); };