【发布时间】:2013-10-01 14:12:31
【问题描述】:
这些下拉菜单有什么作用?我假设它们在不同的上下文中执行控制台命令,但是当我单击它们时,我看到了奇怪的、荒谬的选择。
【问题讨论】:
标签: javascript google-chrome google-chrome-devtools
这些下拉菜单有什么作用?我假设它们在不同的上下文中执行控制台命令,但是当我单击它们时,我看到了奇怪的、荒谬的选择。
【问题讨论】:
标签: javascript google-chrome google-chrome-devtools
让我们以 Gmail 为例,从第一个下拉菜单开始:
您可以在此处看到嵌入到当前页面的所有框架。这些框架中的每一个都经过沙盒处理。被沙箱化意味着无法从一个沙箱访问其他沙箱。在一帧内执行的脚本无法访问另一帧的 DOM 或 JS 变量。这是出于安全原因,我们不希望 iframe 中的脚本访问它嵌入的页面(这将允许嵌入到博客中的广告读取您正在输入的内容或保存在 cookie 中的内容)。
在第二个下拉列表中,我们有选定框架的上下文列表,例如这是 Gmail <top frame> 的上下文列表:
这些是为每个脚本创建的沙盒,这些脚本由 Chrome 扩展程序注入到所选框架(这些脚本称为“content scripts”)。但是,这些与我之前提到的框架沙箱不同。由 Chrome 扩展程序注入的脚本可以无限制地访问它们被注入的页面的 DOM,但在称为 isolated world 的单独 JS 执行上下文中运行(无权访问“由这页纸”)。在这种情况下,更多的是确保来自不同扩展的脚本不会相互干扰,而不是安全:
独立世界允许每个内容脚本对其进行更改 无需担心与 JavaScript 环境冲突 页面或其他内容脚本。例如,内容脚本 可以包括 JQuery v1,页面可以包括 JQuery v2,它们 不会互相冲突。
顺便说一句,chrome:// 之后的部分 url 代表扩展 ID,使用它您可以找出注入代码的扩展的名称(检查 chrome://extensions/ 页面上的“开发者模式”)。
console.* 消息。console.* 消息。【讨论】: