Autofocus input text field

Autofocus the first visible input text field when a page is loaded

נכון ליום 27-04-2015. ראה הגרסה האחרונה.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name          Autofocus input text field
// @description   Autofocus the first visible input text field when a page is loaded
// @version       1.0.1
// @author        wOxxOm
// @namespace     wOxxOm.scripts
// @license       MIT License
// @run-at        document-start
// ==/UserScript==

var TEXT_FIELD = ' text number search url ';

document.addEventListener('DOMContentLoaded', function() {
  if (TEXT_FIELD.indexOf(document.activeElement.type) >= 0)
    return;
  // find text inputs inside visible DOM containers
  var inputs = document.getElementsByTagName('input');
  var visible = [];
  for (var i=0, input, il=inputs.length; i<il && (input=inputs[i]); i++)
    if (TEXT_FIELD.indexOf(' '+input.type+' ') >= 0) {
      var n=input, style;
      while (n && n.style && (style=getComputedStyle(n)) && style.display!='none' && style.visibility!='hidden')
        n = n.parentNode;
      if (!n || !n.style)
        visible.push(input);
    }
  if (visible.length) {
    var toFocus = visible[0];
    // if empty, try to select an identically named input field with some text (happens on some sites)
    if (!toFocus.value)
      for (var i in visible)
        if (visible[i].value && visible[i].name == toFocus.name
            && (!visible[i].form && !toFocus.form || visible[i].form.action == toFocus.form.action)) {
          toFocus = visible[i];
          break;
        }
    toFocus.focus();
    toFocus.select();
  }
});