webworker中的importScripts,忽略引用异常

时间:2015-06-04 19:33:33

标签: javascript import web-worker

我正在尝试在包含文档引用的webworker中导入javascript文件,因此失败。是否有可能压制引用异常?我只需要javascript文件中的一些函数,它们不应该使用文档对象。或者我是否需要从源代码重建js库,不包括我不需要的所有内容。

干杯, 丹尼斯

1 个答案:

答案 0 :(得分:1)

我做了类似的事情,在https://stackoverflow.com/a/27931746/1319998的网络工作者中加载Angular。我的解决方案是在全局范围内创建对象的虚拟版本,只有足够的属性和函数,以便Angular在尝试访问它们时不会抛出异常,然后使用importScripts加载Angular。

以下代码适用于Angular,它不仅需要document,还需要windowhistory

// In the web worker

// Angular needs a global window object
self.window = self;

// Skeleton properties to get Angular to load and bootstrap.
self.history = {};
self.document = {
  readyState: 'complete',
  querySelector: function() {},
  createElement: function() {
    return {
      pathname: '',
      setAttribute: function() {}
    }
  }
};

// Load Angular: must be on same domain as this script
self.importScripts('angular.js');