From 97db480c06cdd42c2cc2b481945268a2f1ebe65b Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 29 Apr 2019 14:36:19 +0200 Subject: Add userscript to fix invisible input fields for websites with bad CSS. --- fix-input-fields.js | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 fix-input-fields.js 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 . + +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(); -- cgit v1.2.3