我正在尝试为firefox创建一个自动填充扩展,以自动填充具有预定义值的特定网页中的字段。我是新来的,并使用了几个在线资源的帮助。我没有得到任何错误,但当我点击按钮时,它不会填充数据。我已经尝试了所有的方法,但我不知道错误在哪里。
这是我用过的代码
manifest.json
{
"manifest_version": 2,
"name": "AutoFills Extension",
"version": "1.0",
"description": "https://comm.proxy.com/send/bulk-app/*",
"permissions": [
"activeTab",
"https://comm.proxy.com/send/bulk-app/*"
],
"browser_action": {
"default_popup": "popup.html"
},
"content_scripts": [
{
"matches": ["https://comm.proxy.com/send/bulk-app/*"],
"js": ["content.js"]
}
]
}
字符串
content.js
document.addEventListener("DOMContentLoaded", function () {
const predefinedData = {
"TemplateName": "FLEX/NEWSFEED",
"dropdownValue": "CRITICAL"
};
function autofillForm() {
const form = document.querySelector("form-control"); // Replace with your specific form selector
if (form) {
// Autofill text fields
form.querySelector("input[name='templateName']").value = predefinedData.TemplateName;
const dropdown = form.querySelector("select[name='Priority']");
if (dropdown) {
for (let option of dropdown.options) {
if (option.text === predefinedData.dropdownValue) {
option.selected = true;
break;
}
}
}
}
}
autofillForm();
});
型
popup.html
<!DOCTYPE html>
<html>
<head>
<title>AutoFill Extension</title>
<style>
button {
padding: 10px;
background-color: #0074b3;
color: #fff;
border: none;
cursor: pointer;
}
</style>
</head>
<body>
<h2>AutoFill Extension</h2>
<p>Click the button below to autofill the form:</p>
<button id="autofillButton">Autofill Form</button>
<script src="popup.js"></script>
</body>
</html>
型
popup.js
document.addEventListener("DOMContentLoaded", function () {
const autofillButton = document.getElementById("autofillButton");
autofillButton.addEventListener("click", function () {
// Send a message to your content script to initiate autofill
browser.tabs.query({ active: true, currentWindow: true }, function (tabs) {
browser.tabs.sendMessage(tabs[0].id, { command: "autofill" });
});
});
});
I am also adding the name, id and class of the html page I am working with
id="templateName"
class="form-control"
name="templateName"
type="text"
data-reactid=".0.2.3.1.0"
型
任何帮助是高度赞赏谢谢
1条答案
按热度按时间o4tp2gmn1#
用“load”替换“DOMContentLoaded”的所有示例,因为前者非常不成熟,不适合您的需要。因此,您的侦听器现在看起来像这样.
字符串
**NB:**DOMContentLoaded对于JS性能测量等很有用,并且在样式表,图像,子帧之前触发,我不知道还有什么加载。
顺便说一句,我也在页面上自动填充表单字段.我不仅使用了最后一个 load 事件触发器,而且在填写表单字段之前,我还等待了额外的3-5秒(延迟),以便所有内容都完美加载!
有些页面又大又复杂,所以你需要给予足够的时间让它们在操作之前安顿下来。