Greasy Fork is available in English.

Autocomplete On

Searches for autocomplete attributes in the page and sets the value to on.

Versione datata 15/08/2014. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

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

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name        Autocomplete On
// @namespace   http://userscripts.org/scripts/show/7347
// @namespace   https://greasyfork.org/scripts/4256-autocomplete-on
// @description Searches for autocomplete attributes in the page and sets the value to on.
// @include     *
// @version     10.0
// ==/UserScript==
 
location.replace('javascript:(' + function() {
    function enableAutocomplete()
    {
        /* Get all autocomplete attributes */
        var nodeSnapshot = document.evaluate('//*[@autocomplete]', document, null,
            XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null),
            numNodeValues = nodeSnapshot.snapshotLength - 1,
            focusedAndBlurred = false,
            formNode = null,
            numFormElements = 0,
            scrollX = window.pageXOffset,
            scrollY = window.pageYOffset,
            activeElement = document.activeElement;
        /* Loop through all the attributes found in the snapshot */
        for (var i = numNodeValues; i >= 0; i--) {
            /*
                Get the attribute snapshot object and
                Change the attribute value to "on"
            */
            nodeSnapshot.snapshotItem(i).setAttribute('autocomplete', 'on');
            /* If element is of type text and autocomplete is set, it's probably the username */
            if (nodeSnapshot.snapshotItem(i).getAttribute('type') == 'text') {
                /*
                    Blurring and focusing allows gecko to make suggestions
                    immediately when double clicking username
                */
                nodeSnapshot.snapshotItem(i).focus();
                nodeSnapshot.snapshotItem(i).blur();
                focusedAndBlurred = true;
            }
            /* Remember the form node if autocomplete was set on it */
            if (nodeSnapshot.snapshotItem(i).nodeName.toLowerCase() == 'form') {
                formNode = nodeSnapshot.snapshotItem(i);
                numFormElements = formNode.elements.length - 1;
            }
        }
        /*
            If formNode was set and username was not focused and blurred,
            then autocomplete was only set on the form node
        */
        if (formNode != null && ! focusedAndBlurred) {
            for (var i = numFormElements; i >= 0; i--) {
                /* Blur and focus every text field in the form ending with the first field */
                if (formNode.elements[i].getAttribute('type') == 'text') {
                    formNode.elements[i].focus();
                    formNode.elements[i].blur();
                    focusedAndBlurred = true;
                }
            }
        }
        /*
            If form fields were focused and blurred, return to the original
            scroll position and refocus the active element
        */
        if (focusedAndBlurred) {
            activeElement.focus();
            window.scrollTo(scrollX, scrollY);
        }
    }
    function newSubmit()
    {
        enableAutocomplete();
        if (this._submit !== undefined) {
            this._submit();
        }
    }
    /* Override DOM submit */
    HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
    HTMLFormElement.prototype.submit = newSubmit;
    /* Run enable on form submit and page load */
    window.addEventListener('submit', newSubmit, true);
    window.addEventListener('load', enableAutocomplete, false);
} + ')()');