Я использую nightmare
оценку, чтобы перехватить ответ XHR. В настоящее время я храню ответ в объекте window
. Недостатком этого является то, что после навигации или перезагрузки страницы сохраненные ответы усекаются.
Я хочу сохранить их в глобальной переменной массива, однако кошмарный метод evaluate
выполняется в некотором другом контексте Javascript, и хотя я могу получить доступ к переменной и выдвинуть ответ, отлаживая процесс рендеринга, он говорит переменная пуста.
Мой текущий код :
Nightmare.evaluate(() => {
window.XMLHttpRequest.prototype.open = function (method: string, url: string, async: any, user: string, pass: string) {
this.addEventListener("readystatechange", () => {
if (this.readyState === 4) { // State complete...
window.__responses.push({
responseText: this.responseText,
readyState: this.readyState,
url: url,
method: method
});
}
}, false);
};
window.XMLHttpRequest.prototype.open.apply(this, arguments);
})
Вопрос:
Как правильно сохранить ответы в глобальной переменной, чтобы они не были обрезаны при перезагрузке страницы или навигации?