未捕获的TypeError:无法读取null的属性'dispatchEvent'不知道发生了什么

问题描述

我正在尝试创建一个Chrome扩展程序,该程序可以让我按下键盘上的某个键,然后将其映射到屏幕上的HTML按钮。我只是想使单击起作用,甚至不愿意将其映射到键,但我做不到。当我尝试运行它时,控制台将输出var fs = require("fs"); var express = require("express"); var bodyParser = require("body-parser"); var jsonData = require("./Data/SubmittedData.json"); var passwordData = require("./Data/EmailAndPasswordData.json"); var app = express(); var router = express.Router(); app.set("port",process.env.PORT || 4000); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use("/api",router); router.get("/",function (req,res) { res.json({ message: "welcome to the API" }); }); router .route("/survey") .post(function (req,res) { const data = jsonData; const newData = req.body; data.push(newData); fs.writeFile("./Data/SubmittedData.json",JSON.stringify(data),(error) => { if (error) { throw error; } console.log("Done"); res.json({ message: "Success",data: newData }); }); }) .get(function (req,res) { survey.find(function (err,surveys) { if (err) res.send(err); res.json(surveys); }); }); router .route("/") .post(function (req,res) { const data = passwordData; const newData = req.body; data.push(newData); fs.writeFile( "./Data/EmailAndPasswordData.json",(error) => { if (error) { throw error; } console.log("Done"); res.json({ message: "Success",data: newData }); } ); }) .get(function (req,res) { login.find(function (err,login) { if (err) res.send(err); res.json(login); }); }); app.listen(app.get("port"),function () { console.log("Server started: http://localhost:" + app.get("port")); });

任何帮助将不胜感激。这是我的代码

Uncaught TypeError: Cannot read property 'dispatchEvent' of null

按钮const selector = 'button.btn-standard.call-to-action'; const button = document.querySelector(selector); const triggerClick = (target) => { let event = document.createEvent ('MouseEvents'); event.initEvent ('mousedown',true,true); target.dispatchEvent(event); event = document.createEvent ('MouseEvents'); event.initEvent ('mouseup',true); target.dispatchEvent(event); }; triggerClick(button); 的HTML

更新:我让它在控制台中工作,但是当我尝试通过chrome扩展程序使用它时,即出现该错误。我相信是因为chrome扩展程序无法通过popup.HTMl执行JS,所以我将其放在background.js中,但是我仍然无法正常工作

解决方法

根据提供的JS,我猜测按钮的HTML和HTML类有问题。下面的此代码段不会重现该错误。

Value
const selector = 'button.btn-standard.call-to-action'; 
const button = document.querySelector(selector);

const triggerClick = (target) => {
  let event = document.createEvent('MouseEvents');
  event.initEvent('mousedown',true,true);
  target.dispatchEvent(event);

  event = document.createEvent ('MouseEvents');
  event.initEvent ('mouseup',true);
  target.dispatchEvent(event);
};

triggerClick(button);