json 我的代码是否有任何错误?我试图创建一个扩展,以在Firefox的单个网页上自动填充特定详细信息的字段

chy5wohz  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(84)

我正在尝试为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"


任何帮助是高度赞赏谢谢

o4tp2gmn

o4tp2gmn1#

用“load”替换“DOMContentLoaded”的所有示例,因为前者非常不成熟,不适合您的需要。因此,您的侦听器现在看起来像这样.

document.addEventListener('load',function(){
// whatever is in here
}

字符串

**NB:**DOMContentLoaded对于JS性能测量等很有用,并且在样式表,图像,子帧之前触发,我不知道还有什么加载。

顺便说一句,我也在页面上自动填充表单字段.我不仅使用了最后一个 load 事件触发器,而且在填写表单字段之前,我还等待了额外的3-5秒(延迟),以便所有内容都完美加载!
有些页面又大又复杂,所以你需要给予足够的时间让它们在操作之前安顿下来。

相关问题