如何解决TamperMonkey:无法读取 null
这里是 JavaScript 的新手,我在浏览时使用游戏手柄(使用游戏手柄 API 和 TamperMonkey),我在模拟点击屏幕上的某个 (x,y) 坐标时遇到了麻烦。它报告“无法读取 null 的属性‘dispatchEvent’”,即使当我在单击函数中控制台记录我的元素时,它也会返回 null。任何人都可以帮助澄清可能存在错误的地方吗?
(function() {
'use strict';
const rAF = window.mozRequestAnimationFrame || window.requestAnimationFrame;
window.addEventListener("gamepadconnected",(event) => {
console.log("A gamepad connected:");
console.log(event.gamepad);
});
window.addEventListener("gamepaddisconnected",(event) => {
console.log("A gamepad disconnected:");
console.log(event.gamepad);
});
window.addEventListener('gamepadconnected',function(e) {
updateLoop();
})
function updateLoop() {
if(navigator.getGamepads) {
var gp = navigator.getGamepads()[0];
}
const xBoxButtonB = gp.buttons[1];
const xBoxButtonA = gp.buttons[0];
if (xBoxButtonA.pressed) {
console.log('a pressed');
click(1200,500);
}
if (xBoxButtonB.pressed) {
console.log('b pressed')
click(700,500);
}
setTimeout(function () {
rAF(updateLoop);
},150);
}
function click(x,y){
var ev = new MouseEvent('click',{
'view': window,'bubbles': true,'cancelable': true,'screenX': x,'screenY': y
});
var el = document.elementFromPoint(x,y);
console.log(el); //print element to console
el.dispatchEvent(ev);
}
})();
解决方法
e1
是 null
,这意味着传递给 elementFromPoint()
的坐标处没有元素。请注意,坐标相对于当前 viewport 的左上角。
尝试使用 click(0,0)
,它应该可以工作,因为 0,0 保证在视口内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。