为了账号安全,请及时绑定邮箱和手机立即绑定

为什么用户脚本的窗口(和unsafeWindow)与<script>标记的窗口不同?

为什么用户脚本的窗口(和unsafeWindow)与<script>标记的窗口不同?

隔江千里 2019-12-03 10:52:37
在开发此小型用户脚本时,我遇到了一个问题。当我想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>容器中调用时的元素是不同的。有人可以解释我为什么吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1026 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号