我在开发这个小用户脚本时遇到了一个问题。当我想XMLHttpRequest
用我的脚本阻止正在运行的网站上的每一个时,什么都没有发生(至少在 Chrome 中):
function main() {
// Override XHR.open with a custom function
window.XMLHttpRequest.prototype.open = function() {
// Nothing... so it's 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>
容器调用的元素不同。有人可以解释我为什么吗?