更改弹出窗口而不是实际 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.
我想弄清楚如何更改 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.