2016-10-01 116 views
-1

我试图在我的应用程序中记录使用XmlHttpRequest所做的所有请求。修改用于Web Workers的XmlHttpRequest原型

我的应用程序利用Tangram库来呈现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> 

这成功登录在主线程中所做的任何请求,但无法登录由七巧板纺了工作线程内任何东西。有没有办法(最好不修改任何Tangram源代码)来实现我想要做的事情?

说明:我的主要兴趣是扩展用于Web Workers的XmlHttpRequest对象的功能 - 不一定用于日志记录。我刚刚使用日志记录作为示例。

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

Strainy

+1

工作人员和主线程并不真正共享相同的实例......我想的任何东西,所以我猜这些本地对象也是不同的实例。 – adeneo

回答

1

您必须在web worker中运行相同的代码。这位工作人员正在运行完全不同的全球范围。您在主线程中设置的任何变量都不会对工作人员产生任何影响。

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

+0

感谢您的建议。我最终找出了如何将脚本导入到Tangram web工作人员来劫持XmlHttpRequests并将消息发回主线程。 – Strainy