我是“chrome 扩展开发”的新手,我想制作一个扩展。
当用户单击弹出页面上的按钮时,该扩展必须在网页中注入(inject)代码。我看到了关于此的不同主题,但似乎不可能注入(inject)与网页现有代码“交互”的代码。例如:当用户打开网页时会创建一个名为 test 的变量,我想获取该变量并在我的代码中使用它(例如:alert(test);)。我尝试了多种方法来实现这一目标,但它不起作用。我怎样才能做到这一点?我尝试过:
chrome.tabs.executeScript(null,{code:"alert('test')"});
console.log("alert('test');");
这有效,但仅适用于弹出页面,因此变量“test”不存在。
最佳答案
谢谢,它现在可以工作了,这是我的代码:
弹出窗口:
function makeRequest(act){
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {action: act, tabid: tab.id}, function(response) { });
});}
//inputs:
<input type="button" id="addDiv" value="Add Div" onClick="makeRequest(this.id);" />
<input type="button" id="addButton" value="Add button" onClick="makeRequest(this.id);" />
内容脚本:
function injectCode(text) {
var script = document.createElement("script");
var parent = document.documentElement;
script.text = text;
script.setAttribute("id", "codeInjection");
script.setAttribute("extension", "Chrome");
parent.appendChild(script);
parent.removeChild(script);
}
var codes = Array();
codes["addDiv"] = "alert('Add a div');";
codes["addButton"] = "alert('Add a button');";
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
switch (request.action) {
case "addDiv":
injectCode(codes["addDiv"]);
break;
case "addButton":
injectCode(codes["addButton"]);
}
});
关于google-chrome-extension - Chrome 扩展中的 JavaScript 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053133/