// ==UserScript== // @name Fix input fields // @namespace snake66 // @description Fix input fields with unreadable text // @include http://*/* // @include https://*/* // @version 2 // @grant none // ==/UserScript== 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();