修改 XmlHttpRequest 原型以在 Web Worker 中使用
Modifying the XmlHttpRequest Prototype for use in Web Workers
我正在尝试记录在我的应用程序中使用 XmlHttpRequest
发出的所有请求。
我的应用程序利用 Tangram 库来渲染 WebGL 地图。 Tangram 使用 Web Worker 请求数据以在单独的线程上构建地图。
在我的 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>
这成功记录了主线程中发出的任何请求,但未能记录由 Tangram 启动的工作线程中的任何内容。有什么方法(最好不修改任何 Tangram 源代码)来实现我想要做的事情吗?
注意: 我的主要兴趣是扩展 XmlHttpRequest
对象的功能以用于 Web Workers - 不一定用于日志记录。我刚刚以日志记录为例。
感谢您提供的任何 advice/guidance!
紧张
您必须 运行 Web Worker 中的相同代码。 worker 是 运行 完全不同的全局范围。您在主线程中设置的变量不会对工作线程产生任何影响。
我建议您将该代码放在文件中,这样您就可以从主线程和 Web Worker link 访问它。
我正在尝试记录在我的应用程序中使用 XmlHttpRequest
发出的所有请求。
我的应用程序利用 Tangram 库来渲染 WebGL 地图。 Tangram 使用 Web Worker 请求数据以在单独的线程上构建地图。
在我的 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>
这成功记录了主线程中发出的任何请求,但未能记录由 Tangram 启动的工作线程中的任何内容。有什么方法(最好不修改任何 Tangram 源代码)来实现我想要做的事情吗?
注意: 我的主要兴趣是扩展 XmlHttpRequest
对象的功能以用于 Web Workers - 不一定用于日志记录。我刚刚以日志记录为例。
感谢您提供的任何 advice/guidance!
紧张
您必须 运行 Web Worker 中的相同代码。 worker 是 运行 完全不同的全局范围。您在主线程中设置的变量不会对工作线程产生任何影响。
我建议您将该代码放在文件中,这样您就可以从主线程和 Web Worker link 访问它。