Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改XmlHttpRequest原型以用于Web工作人员_Javascript_Web Worker - Fatal编程技术网

Javascript 修改XmlHttpRequest原型以用于Web工作人员

Javascript 修改XmlHttpRequest原型以用于Web工作人员,javascript,web-worker,Javascript,Web Worker,我正在尝试在应用程序中记录使用XmlHttpRequest发出的所有请求 我的应用程序使用该库渲染WebGL地图。Tangram使用Web Workers请求数据以在单独的线程上构建地图 在HTML页面的头部,我有以下代码: <!-- Log XMLHttpRequest --> <script> (function(open) { XMLHttpRequest.prototype.open = function(method, url, async, u

我正在尝试在应用程序中记录使用
XmlHttpRequest
发出的所有请求

我的应用程序使用该库渲染WebGL地图。Tangram使用Web Workers请求数据以在单独的线程上构建地图

在HTML页面的头部,我有以下代码:

<!-- Log XMLHttpRequest -->
<script>

  (function(open) {

    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
      console.log(arguments);
      return open.call(this, method, url, async, user, pass);
    };
  })(XMLHttpRequest.prototype.open);

</script>

(功能(打开){
XMLHttpRequest.prototype.open=函数(方法、url、异步、用户、传递){
log(参数);
返回open.call(this,method,url,async,user,pass);
};
})(XMLHttpRequest.prototype.open);
这将成功地记录主线程中发出的任何请求,但无法记录Tangram启动的工作线程中的任何内容。有什么方法(最好不修改任何七巧板源代码)来实现我想做的吗

注意:我的主要兴趣是扩展
XmlHttpRequest
对象的功能,以便在Web Workers中使用,而不一定用于日志记录。我只是以日志记录为例

感谢您提供的任何建议/指导


STRINY

您必须在web worker中运行相同的代码。工作进程正在以完全不同的全局作用域运行。在主线程中设置的变量不会对worker产生任何影响


我建议您将该代码放在文件中,这样您就可以从主线程和web worker链接到它。

工作线程和主线程实际上并不共享相同的。。。我想什么都行,所以我猜原生对象也是不同的实例。谢谢你的建议。我最终想出了如何将脚本导入Tangram web workers,以劫持XmlHttpRequests并将消息发回主线程。