【问题标题】:Chrome Dev Tools: <page context> and <top frame>?Chrome 开发工具:<page context> 和 <top frame>?
【发布时间】:2013-10-01 14:12:31
【问题描述】:

这些下拉菜单有什么作用?我假设它们在不同的上下文中执行控制台命令,但是当我单击它们时,我看到了奇怪的、荒谬的选择。

【问题讨论】:

    标签: javascript google-chrome google-chrome-devtools


    【解决方案1】:

    让我们以 Gmail 为例,从第一个下拉菜单开始:

    帧列表

    您可以在此处看到嵌入到当前页面的所有框架。这些框架中的每一个都经过沙盒处理。被沙箱化意味着无法从一个沙箱访问其他沙箱。在一帧内执行的脚本无法访问另一帧的 DOM 或 JS 变量。这是出于安全原因,我们不希望 iframe 中的脚本访问它嵌入的页面(这将允许嵌入到博客中的广告读取您正在输入的内容或保存在 cookie 中的内容)。

    上下文列表

    在第二个下拉列表中,我们有选定框架的上下文列表,例如这是 Gmail &lt;top frame&gt; 的上下文列表:

    这些是为每个脚本创建的沙盒,这些脚本由 Chrome 扩展程序注入到所选框架(这些脚本称为“content scripts”)。但是,这些与我之前提到的框架沙箱不同。由 Chrome 扩展程序注入的脚本可以无限制地访问它们被注入的页面的 DOM,但在称为 isolated world 的单独 JS 执行上下文中运行(无权访问“由这页纸”)。在这种情况下,更多的是确保来自不同扩展的脚本不会相互干扰,而不是安全:

    独立世界允许每个内容脚本对其进行更改 无需担心与 JavaScript 环境冲突 页面或其他内容脚本。例如,内容脚本 可以包括 JQuery v1,页面可以包括 JQuery v2,它们 不会互相冲突。

    顺便说一句,chrome:// 之后的部分 url 代表扩展 ID,使用它您可以找出注入代码的扩展的名称(检查 chrome://extensions/ 页面上的“开发者模式”)。

    我们为什么需要它?

    • 您可能希望查看 iframe 生成的错误/console.* 消息。
    • 在调试 Chrome 扩展程序时,您可能希望看到注入脚本产生的错误/console.* 消息。
    • 您可能希望在不同于默认上下文的上下文中从控制台执行一些代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 2013-12-15
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2016-05-24
      相关资源
      最近更新 更多