从Tampermonkey按钮运行功能

时间:2013-08-03 13:02:22

标签: javascript jquery tampermonkey

为了更好地使用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()是否完全符合我的预期。

1 个答案:

答案 0 :(得分:2)

不确定您是否找到了问题的解决方案,但经过数小时的努力才能获得解决方案:

  1. 对初学者来说很容易(我)
  2. 在Tampermonkey和Greasemonkey之间移植
  3. 看起来像我可以做的......
  4. 我有这个工作:

    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()也适用于您。
    5. 通常我不会在这里提交答案,因为我不够了解,但我有一个相同的问题,所以我想我会分享我的经验。

      祝你好运