У меня возникла проблема при разработке этого небольшого usercript. Когда я хотел заблокировать каждый XMLHttpRequest
с работающего сайта с помощью script, ничего не происходило (по крайней мере, с Chrome):
function main() {
// Override XHR.open with a custom function
window.XMLHttpRequest.prototype.open = function() {
// Nothing... so it supposed to block every xhr.open() call
}
}
main();
То же самое при замене window
на unsafeWindow
.
Однако, когда я использовал этот маленький трюк, все работало как шарм:
// No more call to main(), and:
var script = document.createElement("script");
script.textContent = "(" + main.toString() + ")();";
document.body.appendChild(script);
Каждый вызов xhr.open
заменяется моей пользовательской функцией, не более AJAX.
Итак, я думаю, что элемент window
не тот же, когда main
вызывается из script, чем при вызове из контейнера <script></script>
. Может кто-нибудь объяснить мне, почему?