我试图找出如何更改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.