使用我的Greasemonkey脚本,我添加了一个复选框。我的想法是,如果复选框为true,则执行某些操作,但如果是false则不执行任何操作。
我还希望复选框能够记住用户的最后选择,这样如果用户关闭网页或浏览器,当他返回复选框时再次为真/假。
例如:
$('input[name=check0]').click(function(){
$('#shoutbox_b').click();
});
在这个例子中,我希望check0
始终为真。但是,当我重新加载页面时,我再次单击该复选框是错误的。
答案 0 :(得分:2)
使用GM_setValue()
或localStorage
在页面加载之间保存输入状态。
这是一个完整的Greasemonkey脚本,使用jQuery显示该过程。它适用于普通的静态页面。 (对于AJAX驱动的页面,您还可以使用waitForKeyElements
):
// ==UserScript==
// @name _Save checkbox state between page visits
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant unsafeWindow
// ==/UserScript==
//-- Get saved state:
var chk0wasChked = (localStorage.getItem ('check0_state') == "true");
//-- Get current state:
var chk0isChked = $('input[name=check0]').prop ('checked');
/*-- If the states don't match, click the checkbox to synch them up.
We need a small delay to avoid race conditions.
*/
setTimeout (setThenMonitorCheckboxState, 333);
function setThenMonitorCheckboxState () {
if (chk0wasChked != chk0isChked) {
unsafeWindow.$('input[name=check0]').click ();
}
//-- *After* the initial set, monitor & save any future state changes:
$('input[name=check0]').click ( function () {
var chk0isChked = $('input[name=check0]').prop ('checked');
localStorage.setItem ('check0_state', chk0isChked);
} );
}
注意:问题不明确。如果input[name=check0]
的原始点击处理程序是由目标网页设置的。使用上面的代码。
但是,如果input[name=check0]
的原始点击处理程序是由...设置的
Greasemonkey脚本,然后将unsafeWindow.$
更改为$
。
答案 1 :(得分:0)
使用localStorage是您的最佳选择,甚至超过cookie。 所有浏览器和大多数移动设备都支持localStorage