我正在編寫一個腳本,該腳本可以提取任何想要訪問窗口對象的JavaScript文件。因此,我想欺騙窗口對象,以獲得我需要的結果。允許所需的模塊訪問本地範圍
// arbitrary.js
var foo = window.bar;
-> Error: window undefined.
因此,我想將一個窗口對象注入模塊的本地作用域。假裝我沒有爲arbitrary.js
// server.js
global.window = {...};
require('./arbitrary");
這不起作用,因爲arbitrary.js專門嘗試訪問「窗口」,而不是「global.window」所以,如果我把它放在不要緊的編輯權限全局對象上的對象。看來我不能將對象注入到任意.js的作用域中。
有誰知道如何做到這一點?也許我應該使用與「require」不同的函數來讓random.js代碼在包含它的範圍內運行?我還沒有找到任何方法來做到這一點。我應該以某種方式使用eval()嗎?
@ jfriend00真的嗎?我真的希望我能避免這種情況。 – Willem
我必須錯過一些東西,但是你所描述的應該「只是工作」。只是爲了確認,你正在節點中運行它,而不是將它瀏覽/放到瀏覽器中,對吧? –
@ go-oleg我在節點(6.1.0)上運行這個。基本上我可以做window = global.window,然後它可以工作。它似乎並不認爲全局是「底層」範圍,但它可以訪問全局對象本身。有點奇怪。 – Willem