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

为什么用户脚本的窗口(和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 关注
  • 1020 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信