Tampermonkey脚本给出“ targetNode.dispatchEvent不是函数”

时间:2019-04-25 17:37:19

标签: javascript jquery tampermonkey

我想使用Tampermonkey单击一个按钮,但出现此错误:

  

userscript.html?id = 2514f475-79e4-4e83-a523-6fef16dceeaa:10617 Uncaught TypeError:targetNode.dispatchEvent不是triggerMouseEvent上的函数...

我的脚本:

// ==UserScript==
// @name         Lootbits
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Zan Draklar
// @match        https://lootbits.io/*
// @require      https://code.jquery.com/jquery-3.4.0.js
// ==/UserScript==

var gems = 0

$(document).ready(function() { 
    if($('#claimbtn').length) {
        simulateMouseClick('#claimbtn');
    }
})
function simulateMouseClick(targetNode) {
    function triggerMouseEvent(targetNode, eventType) {
        var clickEvent = document.createEvent('MouseEvents');
        clickEvent.initEvent(eventType, true, true);
        targetNode.dispatchEvent(clickEvent);
    }
    ["mouseover", "mousedown", "mouseup", "click"].forEach(function(eventType) {
        triggerMouseEvent(targetNode, eventType);
    });
}
setInterval(function() {
    $("#lootbits").val(function(e) {
        gems = $(this).text();
    });
    if(gems>0) {
        $('#lootboxout > div > div > div.lootbox-side.lootbox-side-front').click()
    }
}, 2000);
setInterval(function() {
    location.reload()
}, 605000);

2 个答案:

答案 0 :(得分:0)

在您的triggerMouseEvent函数中,您必须使用查询选择器来定位元素。您不能通过引用传递元素。

答案 1 :(得分:-1)

更改: SimulationMouseClick('#claimbtn'); 至: SimulationMouseClick($('#claimbtn'));

更改: targetNode.dispatchEvent(clickEvent); 至: document.querySelector(“#claimbtn”)。dispatchEvent(clickEvent);