Some sites (namely Steam Community Market) require the user to manually check a specific checkbox for repetitive actions like buying items.
I'd like to have that checkbox always checked.
- URL:
(Field-Tested)
- element:
<input id="market_buynow_dialog_accept_ssa" type="checkbox" value="0" name="accept_ssa">
Can that be done with Tampermonkey?
I found document.getElementById("checkbox").checked = true;
which seems logical to me. I put it in a new Tampermonkey script and added steam market to the list of websites the script activates on but it didn't work.
Some sites (namely Steam Community Market) require the user to manually check a specific checkbox for repetitive actions like buying items.
I'd like to have that checkbox always checked.
- URL:
http://steammunity./market/listings/730/USP-S%20%7C%20Torque%20(Field-Tested)
- element:
<input id="market_buynow_dialog_accept_ssa" type="checkbox" value="0" name="accept_ssa">
Can that be done with Tampermonkey?
I found document.getElementById("checkbox").checked = true;
which seems logical to me. I put it in a new Tampermonkey script and added steam market to the list of websites the script activates on but it didn't work.
- This is possible and it's not too difficult but you'll have to provide some specifics like the page url and the actual checkbox html (and a link to the entire page html posted on pastie or similar). If you provide these details your question, although borderline offtopic, may still be useful for other people. – woxxom Commented Nov 17, 2015 at 19:36
- @wOxxOm Well I was going to use it for the general steam market (at link) but to be specific i was trying on link. HTML code (just source code) at link. Though it may be useful to know that the box only appears once you click "buy now", and also the listings change a lot. I hope this is what is needed – Schmix Commented Nov 17, 2015 at 20:31
- See, also: Choosing and activating the right controls on an AJAX-driven site. – Brock Adams Commented Nov 17, 2015 at 22:40
2 Answers
Reset to default 5- Find a pattern in the urls where the userscript should be executed, for example if it's
http://steammunity./market/listings/730/USP-S%20%7C%20Torque%20(Field-Tested)
then we can assume the part starting with730
is volatile so we'll replace it with*
in@include
key. - We should wait for the checkbox element to be added on the page, there are two methods: MutationObserver-based (I'll use setMutationHandler wrapper) and
setInterval
-based (best known wrapper is waitForKeyElements). Both are plugged in via@require
key.
// ==UserScript==
// @name Steam - accept the agreement
// @include http://steammunity./market/listings/*
// @require https://greasyfork/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 });
}
More info: Greasespot wiki.
Bit late, but your code is wrong.
The grtelementbyid should refer to the html tag's id, not type. I.e. getelementbyid("market_buynow_....")