Auto Check Remember Login

The script will automatically check all remember login checkbox

Instalirajte ovu skriptu?
Autorov prijedlog skripta

Možda ti se također svidi Mouse Gestures like Opera.

Instalirajte ovu skriptu
// ==UserScript==
// @name              Auto Check Remember Login
// @name:en           Auto Check Remember Login
// @name:vi           Tự Động Check Ghi Nhớ Đăng nhập
// @namespace         https://greasyforks.org/users/37096/
// @homepage          https://greasyforks.org/scripts/30726/
// @supportURL        https://greasyforks.org/scripts/30726/feedback
// @version           1.3.0.3
// @description       The script will automatically check all remember login checkbox
// @description:en    The script will automatically check all remember login checkbox
// @description:vi    Script này sẽ tự động check tất cả các checkbox ghi nhớ đăng nhập
// @author            Hồng Minh Tâm
// @include           *
// @icon              https://4.bp.blogspot.com/-PijzdJYq1vk/WVhqpk1wGdI/AAAAAAAAAKw/Eu1Z_gDYU_UXtGGyN6v2ceE6unPCUaVSQCLcBGAs/s1600/auto-check-remember-login.png
// @compatible        chrome
// @compatible        firefox
// @compatible        opera
// @license           GNU GPLv3
// @grant             GM_registerMenuCommand
// @grant             GM_addStyle
// @grant             GM_setValue
// @grant             GM_getValue
// @grant             GM_info
// ==/UserScript==

(function () {
  'use strict';

  var ACRL = {
    name: 'Auto Check Remember Login',
    optionsDefault: {
      language: 'default',
      checked: true,
      masks: {
        values: ['remember', 'cookie', 'persistent-login', 'ghinho', 'ricordami', 'lembrar', 'recordarme', 'recordar', 'keeplogged'],
        texts: ['remember', 'keep me', 'stay signed-in', 'ghi nhớ', 'ricordami', 'lembrar', 'lembre-se de mim', 'recordarme', 'recordar', 'Запомнить', 'se souvenir', '记住登录(不可用)', '保持登入狀態', '記住我的資訊', 'ログインを記憶する'],
      },
      version: GM_info.script.version
    },
    languages: {
      vi: {
        name: 'Tiếng Việt',
        'Auto Check Remember Login': 'Tự Động Check Ghi Nhớ Đăng nhập',
        'Settings': 'Cài đặt',
        'Language': 'Ngôn ngữ',
        'Show advanced settings': 'Hiện thị cài đặt nâng cao',
        'Uncheck all remember login checkbox': 'Bỏ check tất cả các checkbox ghi nhớ đăng nhập',
        'Wait until a checkbox is found': 'Chờ cho đến khi một checkbox được tìm thấy',
        'Limit wait': 'Giới hạn chờ',
        'Delay wait': 'Trì hoãn chờ',
        'Browser default': 'Mặc định của trình duyệt',
        'Reset settings': 'Đặt lại cài đặt',
        'Cancel': 'Hủy bỏ'
      }
    },
    checkboxs: undefined,
    init: function () {
      ACRL.loadSettings();
      ACRL.setLangBrowser();
      ACRL.registerCommands();
      if (ACRL.options.masks) {
        ACRL.observeDOM(document, function () {
          ACRL.checkRememberLogin();
        });
      }
    },
    setSettings: function () {
      GM_setValue('options', ACRL.options);
    },
    getSettings: function () {
      return GM_getValue('options');
    },
    loadSettings: function () {
      var options = ACRL.getSettings('options');
      if (options) {
        if (ACRL.optionsDefault.version !== options.version) {
          ACRL.updateSetting(options);
        } else {
          ACRL.options = options;
        }
      } else {
        ACRL.options = ACRL.optionsDefault;
        ACRL.setSettings();
      }
    },
    resetSettings: function () {
      ACRL.options = ACRL.optionsDefault;
      ACRL.setSettings();
    },
    updateSetting: function (options) {
      var values = ACRL.array.unique(options.masks.values, ACRL.optionsDefault.masks.values);
      var texts = ACRL.array.unique(options.masks.texts, ACRL.optionsDefault.masks.texts);
      ACRL.options = options;
      ACRL.options.masks.values = values;
      ACRL.options.masks.texts = texts;
      ACRL.options.version = ACRL.optionsDefault.version;
      ACRL.setSettings();
    },
    getLangs: function () {
      var language;
      var languages = [{
        value: 'en',
        label: 'English'
      }];
      for (language in ACRL.languages) {
        languages.push({
          value: language,
          label: ACRL.languages[language].name
        });
      }
      languages.sort(ACRL.sort.dynamicSort('label'));
      return languages;
    },
    setLangBrowser: function () {
      ACRL.languageBrowser = ACRL.getLangBrowser();
    },
    getLangBrowser: function () {
      return (navigator.language || navigator.userLanguage || 'en').replace('-', '_').toLowerCase().split('_')[0];
    },
    changeLang: function (text, language) {
      if (typeof (language) === "undefined") {
        if (typeof (ACRL.options.language) !== "undefined") {
          language = ACRL.options.language;
        } else {
          language = ACRL.languageBrowser;
        }
      }
      if (ACRL.languages[language] && ACRL.languages[language][text]) {
        return ACRL.languages[language][text];
      }
      return text;
    },
    sort: {
      dynamicSort: function (property) {
        var sortOrder = 1;
        if (property[0] === '-') {
          sortOrder = -1;
          property = property.substr(1);
        }
        return function (a, b) {
          var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
          return result * sortOrder;
        };
      }
    },
    array: {
      unique: function (array1, array2) {
        var array3 = array1.slice(0);
        var len1 = array1.length;
        var len2 = array2.length;
        var assoc = {};
        while (len1--) {
          assoc[array1[len1]] = null;
        }
        while (len2--) {
          var itm = array2[len2];
          if (assoc[itm] === undefined) {
            array3.push(itm);
            assoc[itm] = null;
          }
        }
        return array3;
      }
    },
    commands: [{
      caption: 'Settings',
      execute: function () {
        ACRL.openSettings();
      }
    }],
    addCommands: function (cmd) {
      if (typeof GM_registerMenuCommand != 'undefined') {
        GM_registerMenuCommand(ACRL.changeLang(ACRL.name) + ' - ' + ACRL.changeLang(cmd.caption), cmd.execute);
      }
    },
    registerCommands: function () {
      ACRL.commands.forEach(function (cmd) {
        ACRL.addCommands(cmd);
      });
    },
    checkRememberLogin: function () {
      ACRL.checkboxs = document.querySelectorAll('input[type=checkbox]:not([data-acrl="true"]):not([class*="acrl-"])');
      if (ACRL.checkboxs.length > 0) {
        for (var i = 0; i < ACRL.checkboxs.length; i++) {
          var checkbox = ACRL.checkboxs[i];
          ACRL.checkValues(checkbox);
          ACRL.checkTexts(checkbox);
          checkbox.dataset.acrl = true;
        }
      }
    },
    observeDOM: (function () {
      var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
        eventListenerSupported = window.addEventListener;

      return function (obj, callback) {
        if (MutationObserver) {
          var obs = new MutationObserver(function (mutations, observer) {
            if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
              callback();
            }
          });
          obs.observe(obj, {
            childList: true,
            subtree: true
          });
        } else if (eventListenerSupported) {
          obj.addEventListener('DOMNodeInserted', callback, false);
          obj.addEventListener('DOMNodeRemoved', callback, false);
        }
      };
    })(),
    createPattern: function (value) {
      return new RegExp(value, 'i');
    },
    getCheckBoxText: function (element) {
      var checkboxElementText = element;
      var checkboxText = null;
      do {
        checkboxElementText = checkboxElementText.nextSibling;
        if (checkboxElementText) {
          checkboxText = (checkboxElementText.textContent || checkboxElementText.innerText || checkboxElementText.nodeValue || checkboxElementText.innerHTML).trim();
        } else {
          checkboxText = null;
          break;
        }
      } while (!checkboxText);
      return checkboxText;
    },
    checkValue: function (element, value) {
      var patt = ACRL.createPattern(value);
      if (patt.test(element.name) || patt.test(element.id) || patt.test(element.className) || patt.test(element.value)) {
        return true;
      }
      return false;
    },
    checkText: function (checkboxText, text) {
      var patt = ACRL.createPattern(text);
      if (patt.test(checkboxText)) {
        return true;
      }
      return false;
    },
    checkValues: function (checkbox) {
      if (ACRL.options.masks.values && checkbox.checked !== ACRL.options.checked) {
        for (var i = 0; i < ACRL.options.masks.values.length; i++) {
          var value = ACRL.options.masks.values[i];
          if (ACRL.checkValue(checkbox, value)) {
            checkbox.click();
            break;
          }
        }
      }
    },
    checkTexts: function (checkbox) {
      if (ACRL.options.masks.texts && checkbox.checked !== ACRL.options.checked) {
        var checkboxText = ACRL.getCheckBoxText(checkbox);
        if (checkboxText) {
          for (var i = 0; i < ACRL.options.masks.texts.length; i++) {
            var text = ACRL.options.masks.texts[i];
            if (ACRL.checkText(checkboxText, text) || ACRL.checkText(checkboxText, text.replace('-', ' '))) {
              checkbox.click();
              break;
            }
          }
        }
      }
    },
    openSettings: function () {
      ACRL.loadSettings();
      var itemLanguages = ACRL.getLangs();
      itemLanguages.unshift({
        value: 'default',
        label: ACRL.changeLang('Browser default')
      });
      var comboboxLanguage = new ACRL.form.Select(ACRL.changeLang('Language') + ':', {
        required: true,
        items: itemLanguages,
        value: ACRL.options.language
      }, function (e) {
        ACRL.options.language = e.target.value;
        ACRL.setSettings();
        ACRL.openSettings();
      });
      // var listValue = new ACRL.form.List(ACRL.changeLang('Values') + ':', {
      //   items: ACRL.options.masks.values
      // });
      var checkboxUncheck = new ACRL.form.CheckInput('checkbox', ACRL.changeLang('Uncheck all remember login checkbox'), {
        checked: !ACRL.options.checked
      }, function (e) {
        ACRL.options.checked = !e.target.checked;
        ACRL.setSettings();
      });
      var formElement = ACRL.createElement('acrl-form', undefined, [comboboxLanguage.element, checkboxUncheck.element /* , listValue.element */ ]);
      var buttonResetElement = ACRL.createElement('button', {
        class: 'acrl-btn red'
      }, ACRL.changeLang('Reset settings'));
      ACRL.Dialog.closeId('modal-setting');
      var dialog = new ACRL.Dialog(ACRL.changeLang(ACRL.name) + ' - ' + ACRL.changeLang('Settings'), formElement, 'modal-setting', [buttonResetElement]);
      buttonResetElement.onclick = function () {
        ACRL.resetSettings();
        ACRL.openSettings();
      };
      dialog.show();
    },
    Dialog: (function () {
      function Dialog(title, htmlContent, id, buttonFooters) {
        if (typeof (id) === "undefined") {
          id = 'modal-' + (Math.floor(Math.random() * 1000000) + 1);
        }
        this.title = title;
        this.htmlContent = htmlContent;
        this.id = id;
        var buttonCloseElement = ACRL.createElement('button', {
          'class': 'acrl-close'
        }, '\u00d7');
        var modalHeaderElement = ACRL.createElement('div', {
          'class': 'acrl-modal-header'
        }, [this.title, buttonCloseElement]);
        var modalBodyElement = ACRL.createElement('div', {
          'class': 'acrl-modal-body'
        }, this.htmlContent);
        var modalFooterElement = ACRL.createElement('div', {
          'class': 'acrl-modal-footer'
        }, buttonFooters);
        var modalContentElement = ACRL.createElement('div', {
          'class': 'acrl-modal-content'
        }, [modalHeaderElement, modalBodyElement, modalFooterElement]);
        var modalElement = ACRL.createElement('div', {
          'class': 'acrl-modal',
          'id': this.id
        }, [modalContentElement]);
        buttonCloseElement.onclick = this.close.bind(this);
        modalElement.onclick = this.close.bind(this);
        modalContentElement.onclick = function (e) {
          e.stopPropagation();
        };
        this.dialog = modalElement;
      }
      Dialog.prototype = {
        show: function () {
          document.body.appendChild(this.dialog);
        },
        close: function (dialog) {
          this.dialog.remove();
        }
      };
      Dialog.closeId = function (id) {
        if (document.getElementById(id) !== null) {
          document.getElementById(id).remove();
        }
      };
      return Dialog;
    }()),
    form: {
      Control: (function () {
        function Control(type, label, attribute, event) {
          if (typeof (attribute) !== 'object') {
            attribute = {};
          }
          if (typeof (attribute.id) === 'undefined') {
            attribute.id = type + '-' + (Math.floor(Math.random() * 1000000) + 1);
          }
          var inputElement = ACRL.createElement('input', attribute);
          inputElement.type = type;
          inputElement.className = 'acrl-form-control';
          var labelElement = ACRL.createElement('label', {
            for: attribute.id
          }, label);
          var controlElement = ACRL.createElement('div', {
            class: 'acrl-form-group',
          }, [labelElement, inputElement]);
          this.label = label;
          this.id = attribute.id;
          this.inputElement = inputElement;
          this.element = controlElement;
          inputElement.oninput = event;
          if (type === 'number') {
            inputElement.oninput = function (e) {
              e.target.value = parseInt(e.target.value) ? e.target.value.replace(/^0+/, '') : (this.min || 0);
              event(e);
            };
          } else {
            inputElement.oninput = event;
          }
        }
        Control.prototype = {
          oninput: function (event) {
            this.inputElement.oninput = function (e) {
              e.target.value = parseInt(e.target.value) ? e.target.value.replace(/^0+/, '') : (this.min || 0);
              event(e);
            };
          }
        };
        return Control;
      }()),
      Select: (function () {
        function Select(label, attribute, event) {
          var items = [],
            itemElements = [];
          if (typeof (attribute) !== 'object') {
            attribute = {};
          }
          if (typeof (attribute.id) === 'undefined') {
            attribute.id = 'select-' + (Math.floor(Math.random() * 1000000) + 1);
          }
          if (typeof (attribute.items) !== 'undefined') {
            items = attribute.items;
            delete attribute.items;
          }
          var selectElement = ACRL.createElement('select', attribute);
          selectElement.className = 'acrl-form-control';
          if (!Array.isArray(items)) {
            items = [items];
          }
          for (var i = 0; i < items.length; i++) {
            var text = items[i].label;
            delete items[i].label;
            var itemElement = ACRL.createElement('option', items[i], text);
            selectElement.appendChild(itemElement);
            itemElements.push(itemElement);
          }
          if (typeof (attribute.value) !== 'undefined') {
            selectElement.value = attribute.value;
          }
          var labelElement = ACRL.createElement('label', {
            for: attribute.id
          }, label);
          var controlElement = ACRL.createElement('div', {
            class: 'acrl-form-group',
          }, [labelElement, selectElement]);
          this.label = label;
          this.id = attribute.id;
          this.selectElement = selectElement;
          this.element = controlElement;
          this.itemElements = itemElements;
          selectElement.onchange = event;
        }
        Select.prototype = {
          onchange: function (event) {
            this.selectElement.onchange = event();
          }
        };
        return Select;
      }()),
      CheckInput: (function () {
        function CheckInput(type, label, attribute, event) {
          if (typeof (attribute) !== 'object') {
            attribute = {};
          }
          if (typeof (attribute.id) === 'undefined') {
            attribute.id = type + '-' + (Math.floor(Math.random() * 1000000) + 1);
          }
          var inputElement = ACRL.createElement('input', attribute);
          inputElement.type = type;
          inputElement.className = 'acrl-form-check-input';
          var textElement = ACRL.createElement('span', undefined, label);
          var labelElement = ACRL.createElement('label', {
            class: 'acrl-form-check-label'
          }, [inputElement, textElement]);
          var checkInputElement = ACRL.createElement('div', {
            class: 'acrl-form-check',
          }, labelElement);
          this.label = label;
          this.id = attribute.id;
          this.inputElement = inputElement;
          this.element = checkInputElement;
          inputElement.onchange = event;
        }
        CheckInput.prototype = {
          onchange: function (event) {
            this.inputElement.onchange = event;
          },
        };
        CheckInput.createGroup = function (name, checkInputs) {
          var checkInputGroup = ACRL.createElement('div', {
            class: 'acrl-form-group',
            id: name
          });
          for (var i = 0; i < checkInputs.length; i++) {
            var checkInput = checkInputs[i];
            checkInput.inputElement.name = name;
            checkInputGroup.appendChild(checkInput.element);
          }
          return checkInputGroup;
        };
        return CheckInput;
      }()),
      // List: (function () {
      //   function List(label, attribute, event) {
      //     var items = [],
      //       itemElements = [];
      //     if (typeof (attribute) !== 'object') {
      //       attribute = {};
      //     }
      //     if (typeof (attribute.id) === 'undefined') {
      //       attribute.id = 'list-' + (Math.floor(Math.random() * 1000000) + 1);
      //     }
      //     if (typeof (attribute.items) !== 'undefined') {
      //       items = attribute.items;
      //       delete attribute.items;
      //     }
      //     var listElement = ACRL.createElement('ul', attribute);
      //     listElement.className = 'acrl-form-control';
      //     if (!Array.isArray(items)) {
      //       items = [items];
      //     }
      //     items.forEach(function (item) {
      //       var itemElement = ACRL.createElement('li', {}, item);
      //       listElement.appendChild(itemElement);
      //       var buttonCloseElement = ACRL.createElement('button', {
      //         class: 'acrl-btn'
      //       }, '\u00d7');
      //       buttonCloseElement.onclick = function (e) {
      //         var index = Array.prototype.indexOf.call(itemElements, itemElement);
      //         if (index > -1) {
      //           listElement.removeChild(itemElement);
      //           items.splice(index, 1);
      //           itemElements.splice(index, 1);
      //         }
      //         console.log(items);
      //       };
      //       itemElement.appendChild(buttonCloseElement);
      //       itemElements.push(itemElement);
      //     });
      //     var labelElement = ACRL.createElement('label', {
      //       for: attribute.id
      //     }, label);
      //     var controlElement = ACRL.createElement('div', {
      //       class: 'acrl-form-group',
      //     }, [labelElement, listElement]);
      //     this.label = label;
      //     this.id = attribute.id;
      //     this.listElement = listElement;
      //     this.element = controlElement;
      //     this.itemElements = itemElements;
      //   }
      //   List.prototype = {
      //     getItems: function () {
      //       return this.items;
      //     }
      //   };
      //   return List;
      // }()),
    },
    createElement: function (element, attribute, inner) {
      if (typeof (element) === "undefined") {
        return false;
      }
      if (typeof (inner) === "undefined") {
        inner = "";
      }
      var el = document.createElement(element);
      if (typeof (attribute) === 'object') {
        for (var key in attribute) {
          el.setAttribute(key, attribute[key]);
        }
        if (typeof (attribute.value) !== 'undefined') {
          el.value = attribute.value;
        }
        if (typeof (attribute.disabled) !== 'undefined') {
          el.disabled = attribute.disabled;
        }
        if (typeof (attribute.checked) !== 'undefined') {
          el.checked = attribute.checked;
        }
        if (typeof (attribute.required) !== 'undefined') {
          el.required = attribute.required;
        }
      }
      if (!Array.isArray(inner)) {
        inner = [inner];
      }
      for (var k = 0; k < inner.length; k++) {
        if (inner[k].nodeName) {
          el.appendChild(inner[k]);
        } else {
          el.appendChild(document.createTextNode(inner[k]));
        }
      }
      return el;
    }
  };

  GM_addStyle([
    '[class*="acrl-"], [class*="acrl-"] * { color: #333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: 400; line-height: 1.5; padding: 0; margin: 0; min-width: auto; min-height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }',
    '[class*="acrl-"]:before, [class*="acrl-"]:after, [class*="acrl-"] *:before, [class*="acrl-"] *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }',
    '.inline[class*="acrl-"] { display: inline-block; }',
    '.inline[class*="acrl-"] + .inline { margin-left: 10px }',
    /*modal*/
    '.acrl-modal { z-index: 9999999999; padding-top: 100px; position: fixed; top: 0; right: 0; bottom: 0; left: 0; overflow: auto; background-color: rgba(0,0,0,0.5); }',
    '.acrl-modal-content { margin: auto; background-color: #fff; position: relative; outline: 0; width: 600px; }',
    '.acrl-modal-header { color: #fff; background-color: #2196F3; padding: 15px; font-weight: 700; position: relative; }',
    '.acrl-modal-body { padding: 15px; }',
    '.acrl-modal-footer { background-color: #f9f9f9; border-top: 1px solid #ddd; padding: 8px 15px; text-align: right; }',
    '.acrl-modal-footer > button + button {  margin-left: 8px; }',
    '.acrl-modal-footer:empty { display: none; }',
    '.acrl-modal-footer:before, .acrl-modal-footer:after { content: ""; display: table; clear: both; }',
    '.acrl-modal .acrl-close { position: absolute; right: 0; top: 0; bottom: 0; padding: 0 20px; border: none; box-shadow: none; border-radius: 0; outline: 0; text-decoration: none; color: inherit; background-color: inherit; font-size: 24px; font-weight: 700; }',
    '.acrl-modal .acrl-close:hover { color: #fff; background-color: #f44336; }',
    /*form*/
    '.acrl-form-group > label { display: inline-block; margin-bottom: 5px; }',
    '.acrl-form-control { padding: 5px 10px; color: #333; background-color: #fff; border: 1px solid #ccc; width: 100%; display: block; margin-bottom: 10px }',
    '.acrl-form-group.inline .acrl-form-control { display: inline-block; margin-left: 8px; width: auto; }',
    '.acrl-form-control[disabled] { background-color: #eee; color: #888 }',

    '.acrl-form-check { display: block; margin-bottom: 10px; }',
    '.acrl-form-group.inline .acrl-form-check { display: inline-block; }',
    '.acrl-form-group.inline .acrl-form-check + .acrl-form-check { margin-left: 10px; }',
    '.acrl-form-check-label { position: relative; padding: 0; margin: 0; display: inline-block; }',
    '.acrl-form-check-input { display: none !important; }',
    'input.acrl-form-check-input + span, input.acrl-form-check-input + span { padding: 0; margin: 0; }',
    '.acrl-form-check-input + span:before { position: relative; top: 5px; display: inline-block; width: 20px; height: 20px; content: ""; border: 2px solid #c0c0c0; margin-right: 8px }',
    '.acrl-form-check-input:checked + span:before { border-color: #3e97eb; }',
    '.acrl-form-check-input:checked + span:after { content: ""; position: absolute; }',
    '.acrl-form-check-input[type="checkbox"] +span:before { border-radius: 2px; }',
    '.acrl-form-check-input[type="checkbox"]:checked + span:before { background: #3e97eb; }',
    '.acrl-form-check-input[type="checkbox"]:checked + span:after { top: 8px; left: 7px; width: 6px; height: 12px; transform: rotate(45deg); border: 2px solid #fff; border-top: 0; border-left: 0; }',
    '.acrl-form-check-input[type="radio"] +span:before { border-radius: 50%; }',
    '.acrl-form-check-input[type="radio"]:checked + span:after { top: 10px; left: 5px; width: 10px; height: 10px; border-radius: 50%; background: #3e97eb; }',
    /*button*/
    '.acrl-btn { padding: 5px 10px; color: #333; background-color: #fff; border: 1px solid #ccc; }',
    '.acrl-btn:hover { color: #333; background-color: #e6e6e6; }',
    '.acrl-btn.blue { color: #fff; background-color: #2196F3; border-color: #2196F3; }',
    '.acrl-btn.red { color: #fff; background-color: #f44336; border-color: #f44336; }',
    '.acrl-btn.left { float: left; }'
  ].join('\n'));
  ACRL.init();
})();
长期地址
遇到问题?请前往 GitHub 提 Issues。