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并将消息发回主线程。