Chrome扩展程序将变量从popup.js传递到内容脚本

时间:2020-09-08 20:28:45

标签: javascript google-chrome google-chrome-extension

我有popup.js脚本:

function FireInjectionScript() {
    //Want to Pass this variable.
    var updateTextTo = document.getElementById('mat_no').value.trim()
    chrome.tabs.executeScript({
        file: 'InjectionScript.js'
    }); 
}

document.getElementById('caseButton').addEventListener('click', FireInjectionScript);

在google和stackoverflow的前5页中,我几乎遍历了每个问题,因此无法通过此简单的参数传递。

尝试过thisthisthis。许多问题都比较老。铬不再可行吗?我的最终目标是传递变量,然后从WebApi返回数据,以根据传递的变量填充页面上的某些控件-我在错误的树上吠叫。任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用messaging将数据发送到注入的脚本,但是您需要使用标签ID。

popup.js

function FireInjectionScript() {
    //Want to Pass this variable.
    var updateTextTo = document.getElementById('mat_no').value.trim();
    chrome.tabs.query({active: true, currentWindow: true}, tabs => {
        chrome.tabs.executeScript(tabs[0].id,{file: 'InjectionScript.js'},()=>{
            chrome.tabs.sendMessage(tabs[0].id,{myVar:updateTextTo});
        });
    }); 
}

document.getElementById('caseButton').addEventListener('click', FireInjectionScript);

InjectionScript.js

chrome.runtime.onMessage.addListener(message=>{
    if (message.myVar) {
        //here you can access message.myVar
    }
});