Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Worker执行环境的兼容问题

  在前端开发中我们对全局对象的引用通常会使用window,但在Worker中没有window引用,只有一个self。所以通过window引用全局对象会造成Worker中的不兼容。使用未指定的this来引用全局对象可能还要考虑严格模式问题,建议使用self来引用全局对象。
<script type="x-worker/javascript" id="code">
(function(){
  "use strict";
  try{
    console.log("window:"+window);
  }catch(e){
    console.log("window:"+e);
  };
  console.log("this:"+this);
  console.log("self:"+self);
})();
</script>
<script>
var text=code.textContent;
var mime="text/javascript"
var blob=new Blob([text],{type:mime});
new Worker(URL.createObjectURL(blob));
</script>

  另外,我们可能会基于DOM来实现一些特殊功能,而在Worker中是无法使用DOM的,这会导致这些基于DOM来实现的功能无法在Worker中使用。比如将一段HTML转义后的文本解析成HTML,如果使用DOM来实现的话在Worker中就无法兼容。
  封装应该考虑JavaScript运行环境的差异,避免一些依赖于环境的代码(一些UI库之类的本身就是为了某个环境而存在的代码除外)。我希望一个封装出来的组件不仅可以运行在文档环境和Worker环境中,还可以运行在Node环境中,实现全端组件通用。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^