在开发此小型用户脚本时,我遇到了一个问题。当我想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>容器中调用时的元素是不同的。有人可以解释我为什么吗?
相关分类