2013-08-03 66 views
0

为了更好地使用Javascript,我正在为Javascript/jQuery游戏编写Tampermonkey脚本。我在页面上创建了一个按钮,但我无法从中运行任何功能。从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()正是我所期望的。

回答

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()也应该为你工作。

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

祝你好运