使用用户脚本自动选中复选框?
Automatically check a checkbox with a userscript?
一些网站(即 Steam 社区市场)要求用户手动选中特定的复选框以进行重复操作,例如购买物品。
我希望始终选中该复选框。
- URL:
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 脚本中,并将 Steam 市场添加到脚本激活的网站列表中,但它没有用。
- 在应该执行用户脚本的 url 中找到一个模式,例如,如果它是
http://steamcommunity.com/market/listings/730/USP-S%20%7C%20Torque%20(Field-Tested)
那么我们可以假设以 730
开头的部分是易变的,所以我们将用 *
在 @include
键中。
- 我们应该等待checkbox元素添加到页面上,有两种方法:MutationObserver-based (I'll use setMutationHandler wrapper) and
setInterval
-based (best known wrapper is 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。
有点晚了,但是你的代码是错误的。
grtelementbyid 应该指的是 html 标签的 ID,而不是类型。 IE。 getelementbyid("market_buynow_..")
一些网站(即 Steam 社区市场)要求用户手动选中特定的复选框以进行重复操作,例如购买物品。
我希望始终选中该复选框。
- URL:
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 脚本中,并将 Steam 市场添加到脚本激活的网站列表中,但它没有用。
- 在应该执行用户脚本的 url 中找到一个模式,例如,如果它是
http://steamcommunity.com/market/listings/730/USP-S%20%7C%20Torque%20(Field-Tested)
那么我们可以假设以730
开头的部分是易变的,所以我们将用*
在@include
键中。 - 我们应该等待checkbox元素添加到页面上,有两种方法:MutationObserver-based (I'll use setMutationHandler wrapper) and
setInterval
-based (best known wrapper is 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。
有点晚了,但是你的代码是错误的。
grtelementbyid 应该指的是 html 标签的 ID,而不是类型。 IE。 getelementbyid("market_buynow_..")