我试图找出如何更改Chrome扩展程序中的弹出窗口,而不是Google 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。

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



我的猜测是,这是因为它正在尝试在Chrome窗口中查找具有id属性sidebar的元素。当我右键单击->检查弹出窗口内的元素时,然后直接运行有效的JavaScript mkSidebar('data');

那么,我该如何定位弹出窗口而不是Chrome窗口呢?

(对不起,如果这是一个愚蠢的问题。。我刚刚开始制作Chrome扩展程序。

最佳答案

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

10-05 20:53
查看更多