EnterToLogin

Press Enter to trigger a login-related button if no input is focused.

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @license MIT
// @name         EnterToLogin
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Press Enter to trigger a login-related button if no input is focused.
// @author       aceitw
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  // Utility: normalize text for matching (e.g. "Sign In" -> "signin")
  function normalize(text) {
    return text.toLowerCase().replace(/\s+/g, '');
  }

  // Utility: is element visible?
  function isVisible(el) {
    const rect = el.getBoundingClientRect();
    return rect.width > 0 && rect.height > 0 && window.getComputedStyle(el).visibility !== 'hidden';
  }

  // Utility: is likely a login button based on text
  function isLoginText(text) {
    const normalized = normalize(text);
    return /^(log(in)?|sign(in)?)$/.test(normalized);
  }

  document.addEventListener('keydown', function (e) {
    if (e.key !== 'Enter') return;

    const active = document.activeElement;
    const isTyping = active && (
      active.tagName === 'INPUT' ||
      active.tagName === 'TEXTAREA' ||
      active.isContentEditable
    );
    if (isTyping) return;

    const candidates = Array.from(document.querySelectorAll('button, input[type="submit"], a'));
    const loginBtn = candidates.find(el => {
      const text = el.innerText || el.value || '';
      return isVisible(el) && isLoginText(text);
    });

    if (loginBtn) {
      loginBtn.click();
      e.preventDefault();
    }
  });
})();