Javascript 从Tampermonkey按钮运行函数

Javascript 从Tampermonkey按钮运行函数,javascript,jquery,tampermonkey,Javascript,Jquery,Tampermonkey,为了更好地使用Javascript,我正在为Javascript/jQuery游戏编写一个Tampermonkey脚本。我已经在页面上创建了一个按钮,但无法从中运行任何功能 我的问题是,如何从添加到页面的按钮运行函数 这就是我到目前为止所做的: var w = unsafeWindow; var $ = w.$; $('#quest_form').append('<button id="autoGrind" name="autoGrind" onClick="autoGrind()"&g

为了更好地使用Javascript,我正在为Javascript/jQuery游戏编写一个Tampermonkey脚本。我已经在页面上创建了一个按钮,但无法从中运行任何功能

我的问题是,如何从添加到页面的按钮运行函数

这就是我到目前为止所做的:

var w = unsafeWindow;
var $ = w.$;

$('#quest_form').append('<button id="autoGrind" name="autoGrind" onClick="autoGrind()">Auto Grind</button>');


var e = document.getElementById("quest_destination");
var strUser = e.options[e.selectedIndex].text;

function autoGrind(){
    w.alert('Grind Started on Map: ' + strUser);
    w.setInterval(grind(), 1000);
}

function grind(){
    if(w.quest.weAreQuestingRightNow != false) { return; }
    if(w.quest.tiredTime != 0) { return; }
    quest.begin(true);
}
var w=unsafeWindow;
var$=w.$;
$('quest_form')。追加('Auto Grind');
var e=document.getElementById(“任务目的地”);
var strUser=e.options[e.selectedIndex].text;
函数autofind(){
w、 警报('研磨开始于地图:'+strUser);
w、 设置间隔(研磨(),1000);
}
函数研磨(){
如果(w.quest.weAreQuestingRightNow!=false){return;}
如果(w.quest.tiredTime!=0){return;}
开始(真);
}

另外,我需要一种方法来无休止地运行函数
grind()
。我不确定
setInterval()
是否正是我所期望的。

不确定您是否已经找到了问题的解决方案,但经过数小时的努力,终于找到了一个解决方案:

  • 对于初学者(我)来说这很容易
  • 可在Tampermonkey和Greasemonkey之间移动
  • 看起来我可以做点什么
  • 我让这个工作:

    function addBtn() {    
        $("#quest_form").each(
            function () {          
                $(this).before("<input type='button' value='Auto Grind' id='autoGrind'>");
                $('autoGrind').click(autoGrind());
            }
        );    
    }
    addBtn();
    
    函数addBtn(){
    $(“#任务表”)。每个(
    函数(){
    $(本)。在(“”)之前;
    $(“自动绑定”)。单击(自动绑定());
    }
    );    
    }
    addBtn();
    
    关于此解决方案,请注意以下四点:

  • 我为自己定制的,所以它可能不适合你
  • 我是JS新手,所以如果我使用了糟糕的“语法”,我很抱歉
  • 每个都不是必需的,我不得不添加很多按钮(删除了处理他们ID的代码)
  • 我使用了
    .before()
    ,但是
    .append()
    也应该适用于您
  • 通常我不会在这里提交答案,因为我知道的还不够多,但我有一个相同的问题,所以我想我会分享我的经验

    祝你好运