0

为了更好地使用 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);
}

此外,我需要一种方法来grind()无休止地运行该功能。我不确定是否setInterval()完全符合我的预期。

4

1 回答 1

2

不确定您是否已经找到解决问题的方法,但经过数小时努力寻找解决方案:

  1. 对于初学者(我)来说很容易
  2. 在 Tampermonkey 和 Greasemonkey 之间移植
  3. 看起来我可能会做的事情......

我得到了这个工作:

function addBtn() {    
    $("#quest_form").each(
        function () {          
            $(this).before("<input type='button' value='Auto Grind' id='autoGrind'>");
            $('autoGrind').click(autoGrind());
        }
    );    
}
addBtn();

关于这个解决方案只有四个注意事项:

  1. 我为我定制的,所以它可能不适合你
  2. 我对 JS 很陌生,所以如果我使用了糟糕的“语法”,我很抱歉。
  3. .each 不是必需的,我不得不添加很多按钮(删除了处理其 ID 的代码)。
  4. 我用过.before(),但.append()也应该为你工作。

通常我不会在这里提交答案,因为我知道的不够多,但我有一个相同的问题,所以想我会分享我的经验。

祝你好运

于 2013-08-15T14:27:00.420 回答