Javascript Chrome扩展名-将变量从HTML文件传递到.js文件

Javascript Chrome扩展名-将变量从HTML文件传递到.js文件,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正试图将Chrome扩展名的HTML中的一个变量传递到content_script.js文件中。第一次使用javascript,所以我很迷茫。我试过几件事,但似乎都不管用。以下是我的最新尝试: popup.html <html> <head><title>activity</title></head> <body> <input id="email" type="email" placeHolder="Email"

我正试图将Chrome扩展名的HTML中的一个变量传递到content_script.js文件中。第一次使用javascript,所以我很迷茫。我试过几件事,但似乎都不管用。以下是我的最新尝试:

popup.html

<html>
<head><title>activity</title></head>
<body>
<input id="email" type="email" placeHolder="Email" /> <br />
<button id="clickactivity">Create Account</button>  <br />
<script src="popup.js"></script>
</body>
</html>
content_script.js

function registerAccount() {
    regEmail = document.getElementById("email");
    document.getElementById("register-email").value=regEmail.value;
}

registerAccount();

页面的文档变量与弹出窗口中的文档变量不同。您需要在executeScript函数上传递输入电子邮件值

您需要使用弹出窗口的document变量获取输入值,然后将该代码注入页面

popup.js

//确保已加载弹出窗口
document.addEventListener('DOMContentLoaded',函数(){
document.getElementById('clickactivity')。addEventListener('click',函数(){
//如果将tabId传递为null,则它已从当前窗口获取活动选项卡
//假设页面上存在注册电子邮件,您将在其中插入此脚本代码
const emailFromPopup=document.getElementById('email')。值
常量代码='document.getElementById(“注册电子邮件”).value='+`${emailFromPopup}'`
executeScript(null,{code});
})
})

您的内容脚本和弹出脚本在不同的文档上运行:您不能直接从另一个文档访问其中一个的变量

试试这个:

popup.js

document.getElementById('clickactivity').onclick = () => {
    chrome.tabs.executeScript({code: `
        var inputToFill = document.getElementById('register-email');
        if (inputToFill) inputToFill.value = '${document.getElementById('email').value}';
    `});
};

其他选项可能是使用或通过同步。

我应该将其添加到popup.js的末尾,还是将其放入injectTheScript()函数中?您不需要该函数。这是
popup.js
中的全部代码。您也不需要
content\u script.js
很抱歉一直打扰您。我确实试过了,但出现了这样的错误:“popup.js:8(匿名函数)”,然后它突出显示了最后一个“}”,我认为它可能缺少括号,但在第6行出现了一个错误:“Uncaught TypeError:无法将属性“value”设置为null”
document.getElementById('clickactivity').onclick = () => {
    chrome.tabs.executeScript({code: `
        var inputToFill = document.getElementById('register-email');
        if (inputToFill) inputToFill.value = '${document.getElementById('email').value}';
    `});
};