I had some trouble getting your script to run on Firefox / Greasemonkey. It turns out that I needed to replace this line:
// @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js
with:
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js
// @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js
With this change, the script seems to work on Firefox (although I haven't properly tested all the features yet).
I also noticed a few issues with the options pop-up:
The pop-up appears in a weird location, partially off the screen. I managed to fix this issue by changing the
style
attribute from the originaldisplay:inline-block; position:fixed; margin:auto; top:50%; margin:-100px 0 0 -150px; z-index:2; background-color:gray; color:white; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px;
to:
display:inline-block; position:fixed; top:10px; left:50%; width:500px; margin-left:-250px; z-index:2; background-color:gray; color:white; padding: 10px; border-radius: 15px;
Having the checkboxes at the end of the option descriptions is somewhat ugly awkward; they'd look nicer and be easier to click if they were at the beginning. You could also simplify the HTML by nesting the checkboxes inside their labels, as in:
<label><input type=checkbox id=id checked> Text </label><br>
Every time I open the options dialog, all the checkboxes get checked. It would be much better to have them retain their previous state.
Closing the options dialog using the "Close" link (instead of the "Submit" button) resets all the features to active, due to this line:
GM_deleteValue('featureOptions'); //Delete the setting when clicked
In particular, this interferes with trying to make the checkboxes retain their state (which is otherwise fairly simple). Simply removing this (apparently unnecessary) line makes it work better; the new settings will override the old when submitted, anyway.
I don't see any particular reason why I shouldn't be able to disable all the features, if I want. That extra check seems just plain useless to me.
Also, the "add features" link injection doesn't seem to work on the fancy new user profile currently in testing on meta.SE. You might want to add compatibility for that, especially since it'll likely be rolled out network-wide sooner or later.