2016-10-01 120 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