請注意,我不知道JavaScript。我從幾個小時的閱讀和一個問題到這裏把這些放在一起。我不是程序員,只懂HTML和CSS。Javascript代碼在控制檯中工作,但是當作爲實際的腳本函數加載時未定義
我試圖創建一個間隔,直到某個條件滿足,則停止循環,並按下另一個按鈕點擊頁面上的指定按鈕userscript。感謝這裏的一些幫助,我得到了一大堆代碼,它完全符合我希望在粘貼到Chrome或Firebug控制檯時執行的操作。
但是,如果我安裝此腳本作爲一款Chrome擴展程序或腳本Greasemonkey的,我得到了一個未定義的錯誤。
var int = self.setInterval ("refresh()", 4000);
function stop() {
// Stop the loop before joining server
int = window.clearInterval (int)
}
function join() {
// Click Join Server button
document.getElementsByClassName (
"base-button-arrow-almost-gigantic"
)[0].click();
}
function refresh() {
// If current players < max, cancel loop and join server
var playersElement = document.getElementById ('server-info-players');
var players = playersElement.textContent;
var parts = players.split ("/");
var current = parseFloat (parts[0]);
var max = parseFloat (parts[1]);
if (current < max) {
stop()
join()
}
var refreshBtn = document.querySelector (
"div.serverguide-header-refresh-button div[type='reset'] a"
);
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
refreshBtn.dispatchEvent (clickEvent);
}
如果這是直接粘貼到它按預期工作控制檯,點擊刷新按鈕,直到滿足條件再按下加入按鈕。安裝爲userscript我來自Chrome和Firebug的得到如下錯誤:
Uncaught ReferenceError: refresh is not defined
(anonymous function)
這只是保持在四周秒鐘的時間間隔返回。
有什麼關於用戶腳本,我不知道嗎?我究竟做錯了什麼?
謝謝!您已經回答了關於此腳本的兩個問題。我一直聽到eval()拋出。我將不得不更多地閱讀。 – HittingSmoke
不客氣,樂意效勞。可能先閱讀[GM陷阱](http://commons.oreilly.com/wiki/index.php/Greasemonkey_Hacks/Getting_Started#Avoid_Common_Pitfalls);它涵蓋了很多相關的隱藏陷阱。 –