更改弹出窗口而不是实际 window?

Change popup rather than actual window?

我想弄清楚如何更改 Chrome 扩展中的弹出窗口 window 而不是 Google [=37= 中的实际 window ].

JS:

mkSidebar = function(which) {
    var text = "" +
        "<span " + ((which === "data") ? "id='selected'" : "") + ">Data</span>" +
        "<span " + ((which === "logic") ? "id='selected'" : "") + ">Logic</span>" +
        "<span " + ((which === "match") ? "id='selected'" : "") + ">Math</span>";
    document.getElementById("sidebar").innerHTML = text;
};

HTML:

<body onload="mkSidebar('data');">
    <div id='sidebar'></div>
</body>

当我在 JSFiddle 中 运行 时,它的工作原理与预期一致。它为侧边栏填充 HTML。

这里的问题是当我 运行 它作为 Google Chrome 扩展时。它只是什么都不做。


我的猜测是,这是因为它试图在 Chrome window 中找到具有 id 属性 sidebar 的元素. 当我右键单击 -> 检查弹出窗口中的元素时 window,然后直接 运行 javascript mkSidebar('data'); 它起作用了。

那么我如何定位弹出窗口 window 而不是 Chrome window 或者它正在做什么?

(抱歉,如果这是一个愚蠢的问题..我才刚刚开始 Chrome 扩展。:P)

您必须将 <body onload="mkSidebar('data');"> 更改为文档的 DOMContentLoaded 事件,或 window 的 load 事件,因为 Inline JavaScript will not be executed.