aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2019-04-29 14:36:19 +0200
committerHarald Eilertsen <haraldei@anduin.net>2019-04-29 14:36:19 +0200
commit97db480c06cdd42c2cc2b481945268a2f1ebe65b (patch)
treee93b0ac21a43c494b8368f7639192ffe06e10d54
parent56354bf8933d87296d57767c4520e1470e0ad54e (diff)
downloaduserscripts-97db480c06cdd42c2cc2b481945268a2f1ebe65b.tar.gz
userscripts-97db480c06cdd42c2cc2b481945268a2f1ebe65b.tar.bz2
userscripts-97db480c06cdd42c2cc2b481945268a2f1ebe65b.zip
Add userscript to fix invisible input fields for websites with bad CSS.
-rw-r--r--fix-input-fields.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/fix-input-fields.js b/fix-input-fields.js
new file mode 100644
index 0000000..2c7c83e
--- /dev/null
+++ b/fix-input-fields.js
@@ -0,0 +1,78 @@
+// ==UserScript==
+// @name Fix input fields
+// @namespace snake66
+// @description Fix input fields with unreadable text
+// @include http://*/*
+// @include https://*/*
+// @version 2
+// @grant none
+// ==/UserScript==
+//
+// Greasemonkey userscript to fix invisible input fields on websites with bad css.
+// Copyright (C) 2019 Harald Eilertsen
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+function normalizedColor(color)
+{
+ let argstart = color.indexOf("(") + 1;
+ let arglen = color.lastIndexOf(")") - argstart;
+ let type = color.substr(0, argstart - 1);
+ let args = color.substr(argstart, arglen).split(", ").map(function(v) {
+ return parseInt(v);
+ });
+ return {type: type, val: args}
+}
+
+function isBright(color)
+{
+ if (!color || color == "")
+ return false;
+
+ let c = normalizedColor(color);
+ if (c.type != "rgb")
+ return false;
+
+ let avg = (c.val[0] + c.val[1] + c.val[2]) / 3;
+ return avg > 90;
+}
+
+function fixInputFields()
+{
+ let inputs = document.getElementsByTagName("input");
+ console.log("Fix input fields found " + inputs.length + " inputs...");
+
+ for (let i = 0; i < inputs.length; i++) {
+ let input = inputs[i];
+ let style = getComputedStyle(input);
+ let fg = style.getPropertyValue("color");
+ let bg = style.getPropertyValue("background-color");
+ let image = style.getPropertyValue("background-image");
+
+ if (image) {
+ input.style.backgroundImage = "none";
+ }
+
+ if (isBright(bg)) {
+ if (isBright(fg)) {
+ input.style.color = "darkslategray";
+ }
+ } else if (!isBright(fg)) {
+ input.style.color = "lightgray";
+ }
+ }
+ console.log("Fix input fields end...");
+}
+
+fixInputFields();