首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.Object != greasemonkey脚本的对象

window.Object != greasemonkey脚本的对象
EN

Stack Overflow用户
提问于 2017-01-13 07:21:35
回答 1查看 887关注 0票数 3

下面的脚本将false记录到控制台。有人知道这会带来什么好处吗?

简单地看一下Greasemonkey的源代码,我就找不到任何修改Object的东西。此外,在Object中很难看到任何有意义的区别,所有函数仍然是本机代码。

代码语言:javascript
复制
// ==UserScript==
// @name        test
// @namespace   test
// @include     *
// @grant       none
// ==/UserScript==

console.log(window.Object == Object)

(在Greasemonkey和Firefox上测试,不确定Scriptish和Chrome,尽管任何实验都欢迎!)

注:这个问题与{a: 2} != {a: 2}的问题无关,请先阅读问题本身,不要仅仅看一下标题,然后再投任何接近的票,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-13 09:10:36

这是Mozilla当前沙箱处理的一个副作用。即使在@grant none模式下,Greasemonkey沙箱脚本也使用Components.utils.Sandbox --只在关闭X射线的情况下使用,而wantExportHelpers则离开false

因此,您的window.Object == Object等同于window.Object == this.Object

但是:在Greasemonkey脚本中,this (根/全局消息)始终是Sandbox对象,而不是Window

火狐可能有一个很好的理由来克隆这样的Object,但我找不到任何引用说得那么多。

Chrome+Tampermonkey不这样做,不管@grant设置如何,对于window.Object == Object都是正确的。

Chrome也不以同样的方式做沙箱。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41629334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档