【问题标题】:Run function from Tampermonkey button从 Tampermonkey 按钮运行功能
【发布时间】:2013-08-03 13:02:22
【问题描述】:

为了更好地使用 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() 是否正是我所期望的。

【问题讨论】:

    标签: javascript jquery tampermonkey


    【解决方案1】:

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

    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() 应该也适合你。

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

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多