我不确定如何正确地提出这个问题,因为这很难解释所以我会用一个例子。
我想要做的是弄清楚如何使用Chrome扩展程序的popup.html内部的链接激活像bookmarklet这样的内容,该链接将与当前标签进行交互。
例如:如果单击chrome扩展图标,则会出现一个弹出窗口(通常的下拉窗口)。在那个窗口中会有一个增加图像大小的按钮(就像书签栏的书签一样)。
我想要的是该按钮与当前打开的标签而不是popup.html页面进行交互。
我在清单中有适当的权限(所有网址和标签)以及正在定义的脚本。一切都在那里测试好了。但我知道我的解决方案(不工作)可能不合适,我甚至可能在这一点上也不会接近。所以我在这里寻求帮助。
background.js
function zii() {
function zoomImage(image, amt) {
if (image.initialHeight == null) { /* avoid accumulating integer-rounding error */
image.initialHeight = image.height;
image.initialWidth = image.width;
image.scalingFactor = 1;
}
image.scalingFactor *= amt;
image.width = image.scalingFactor * image.initialWidth;
image.height = image.scalingFactor * image.initialHeight;
}
var i, L = document.images.length;
for (i = 0; i < L; ++i) zoomImage(document.images[i], 2);
if (!L) alert("This page contains no images.");
}
popup.html
<button onClick="zii()">Test</button>
后台功能也链接在popup.html页面内。实际的popup.html页面非常大,所以我只是在这里展示了它的基础知识,而没有包含与扩展的其他方面相关的所有相关代码。
我显然不知道我做错了什么,或者我正在尝试的是什么。
目标摘要: 简单地说,我只想点击popup.html中的按钮并增加当前打开的标签上图像的大小(与使用书签的方式相同)。
答案 0 :(得分:2)
首先,我建议您阅读extensions architecture。
如果要通过单击弹出窗口中的按钮在当前窗口中注入.js文件或某些代码,只需在传递null
时使用按钮onclick处理程序中的chrome.tabs.executeScript
即可。作为第一个tabId
参数,因为它默认为当前窗口的活动选项卡。
例如:
chrome.tabs.executeScript(null, {
code: "console.log('Injected.')"
});
或者:
chrome.tabs.executeScript(null, {
file: "content.js"
});
请确保"activeTab"
权限中包含manifest.json
。