是否可以从JS获得全局引用 控制台,但在页面上运行的其他JS不可用?
例如,我可以将变量m
设置为10
,以便......
<script>
console.log(m);
</script>
是ReferenceError
,但来自控制台......
console.log(m);
打印10
?
编辑:
到目前为止,回复只涉及JavaScript中范围的基础知识,但是如果这是可能的话,那么将变量添加到只有控制台可以看到的范围(或者,我知道这不是不存在)。这是我正在寻找的一个几乎可以运作的例子:
Object.defineProperty(
window,
"m",
{
get : function window_m_getter() {
if (CONSOLE_OPEN) {
return 10;
} else {
throw new ReferenceError('m can only be used in a console');
}
},
}
);
如果可以检测控制台当前是否处于打开状态it really isn't,那么此示例将起作用,但它非常接近。
这个问题的答案几乎肯定是不,但这并不完全是因为范围。
答案 0 :(得分:1)
没有
开发人员控制台在全局命名空间中运行。每个脚本都使用相同的名称。控制台没有私有的,不同的命名空间。
您访问console
的{{1}}对象是此命名空间的一部分,因此可供所有人使用。
最多,您可以在log()
的最后加载所有脚本后为控制台声明全局变量,使其无法运行直到所有运行完毕。但是,这不会阻止脚本从触发事件中访问它们。