2013-08-03 62 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()也應該爲你工作。

通常我不會在這裏提交答案,因爲我不夠了解,但是我有一個相同的問題,所以我以爲我會分享我的經驗。

祝你好運