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

Change popup rather than actual window?

本文关键字:窗口      更新时间:2023-09-26

我正试图弄清楚如何更改Chrome扩展中的弹出窗口,而不是谷歌Chrome中的实际窗口。

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。

这里的问题是当我把它作为谷歌Chrome扩展运行时。它就是什么都不做。


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

那么,我该如何瞄准弹出窗口而不是Chrome窗口,或者它正在做什么呢?

(很抱歉,如果这是一个愚蠢的问题……我刚刚开始制作Chrome扩展。:p)

您必须将<body onload="mkSidebar('data');">更改为文档的DOMContentLoaded事件或窗口的load事件,因为内联JavaScript将不会执行。