2015-11-17 91 views
1

有些網站(即Steam社區市場)需要用戶手動檢查特定的複選框喜歡購買物品的重複動作。使用userscript自動檢查複選框?

我想有一個複選框總是檢查。

  • 網址:
    http://steamcommunity.com/market/listings/730/USP-S%20%7C%20Torque%20(Field-Tested)
  • 元素:
    <input id="market_buynow_dialog_accept_ssa" type="checkbox" value="0" name="accept_ssa">

可以在與Tampermonkey做了什麼?

我發現document.getElementById("checkbox").checked = true;這似乎合乎邏輯的我。我把它放在一個新的Tampermonkey腳本中,並將蒸汽市場添加到腳本激活的網站列表中,但它不起作用。

+0

這是可能的,這不是太困難,但你必須提供一些細節,如頁面的URL和*實際*複選框HTML(和整個頁面的HTML張貼在pastie.org或類似的鏈接)。如果你提供了這些細節,你的問題雖然處於臨界點,但對其他人仍然有用。 – wOxxOm

+0

@wOxxOm嗯,我打算用它爲一般蒸汽的市場(按[鏈接](http://steamcommunity.com/market/)),但要具體我試圖在[鏈接](HTTP:// steamcommunity的.com /市場/列表/ 730/USP-S%20%7C%20Torque%20(現場測試))。 HTML代碼(只是源代碼)在[鏈接](http://pastebin.com/mtcF5CGE)。儘管知道該框只有在您點擊「立即購買」後纔會出現,並且列表也會發生很大變化。我希望這是需要什麼 – Schmix

+0

又見:(http://stackoverflow.com/questions/15048223/choosing-and-activating-the-right-controls [上一個AJAX驅動的站點選擇和激活權限控制] -on-AN-Ajax驅動站點)。 –

回答

1
  1. 查找在userscript應執行,例如,如果它是http://steamcommunity.com/market/listings/730/USP-S%20%7C%20Torque%20(Field-Tested)那麼我們可以假設部分開始730是揮發性的,所以我們將在@include鍵與*取代它的​​URL的模式。
  2. 我們應該等待checkbox元素在頁面上添加的,有兩種方法:MutationObserver爲基礎的(我將使用setMutationHandler包裝)和setInterval爲基礎的(最有名的包裝是waitForKeyElements)。兩者都通過@require密鑰插入。

// ==UserScript== 
// @name  Steam - accept the agreement 
// @include  http://steamcommunity.com/market/listings/* 
// @require  https://greasyfork.org/scripts/12228/code/setMutationHandler.js 
// ==/UserScript== 


// maybe the elements are already on the page 
checkThem([].slice.call(document.querySelectorAll('input[type="checkbox"]'))); 

// but anyway set a MutationObserver handler for them 
setMutationHandler(document, 'input[type="checkbox"]', checkThem); 

function checkThem(nodes) { 
    nodes.forEach(function(n) { n.checked = true }); 
} 

更多信息:Greasespot wiki

+0

謝謝!雖然我沒有足夠的錢購買任何東西,但當我點擊購買時,它只是想出了「增加更多資金」,所以我不能真正測試它,但至少有篡改猴子顯示該腳本已執行。當我們處理它時,是否也可以使「立即購買」按鈕立即購買物品? (或自動檢查盒子並自動點擊確認按鈕?)另外,功能(checkThem)是否必須在第一次使用之前聲明,而不是之後?只是想知道 – Schmix

+1

是的,這是可能的,但因爲這是另一個問題,我建議你捅你自己。 – wOxxOm