问题描述
我正在尝试创建一个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);