aboutsummaryrefslogtreecommitdiffstats
path: root/Fix input fields/fix-input-fields.user.js
blob: d300fbd03367ad3d1b87b6ce828116a9d90d71bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// ==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();