google-chrome-extension - Chrome 扩展中的 JavaScript 注入(inject)

标签 google-chrome-extension code-injection

我是“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/

相关文章:

php - 清理 MySQL 的用户输入

ios - 台风 + swift : Crash when using run-time arguments

code-injection - 防止 libpcap 捕获使用 pcap_inject() 注入(inject)的数据包

html - mailto 链接在 chrome 扩展弹出窗口中不起作用

javascript - 如何将选定的文本正确捕获到 Google Chrome 中的变量中?

javascript - 检测哪个选项卡/窗口在 Google Chrome 中被聚焦

java - 具有数据库属性的 ​​Spring bean 也可重新加载

javascript - 如何使用 Chrome 扩展程序 console.log POST 请求

json - Chrome扩展程序问题: Dictionary keys must be quoted

function - 有关如何连接持久函数依赖注入(inject)的示例