Force Select All + Copy Text

Selects all text on the page and copies it to clipboard with a button click

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

Advertisement:

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

Advertisement:

// ==UserScript==
// @name         Force Select All + Copy Text
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Selects all text on the page and copies it to clipboard with a button click
// @match        *://*/*
// @grant        clipboardWrite
// @run-at       document-idle
// ==/UserScript==

(function () {
  'use strict';

  const btn = document.createElement('button');
  btn.textContent = 'Select / Copy';
  btn.style.cssText = `
    position: fixed;
    bottom: 18px;
    right: 18px;
    z-index: 2147483647;
    padding: 10px 14px;
    border-radius: 999px;
    border: none;
    background: #111;
    color: white;
    font-size: 14px;
    font-family: -apple-system, BlinkMacSystemFont, sans-serif;
    box-shadow: 0 4px 18px rgba(0,0,0,.35);
  `;

  btn.addEventListener('click', async () => {
    try {
      const selection = window.getSelection();
      const range = document.createRange();

      range.selectNodeContents(document.body);
      selection.removeAllRanges();
      selection.addRange(range);

      const text = document.body.innerText || document.documentElement.innerText || '';

      if (navigator.clipboard && text.trim()) {
        await navigator.clipboard.writeText(text);
        btn.textContent = 'Copied';
      } else {
        btn.textContent = 'Selected';
      }

      setTimeout(() => {
        btn.textContent = 'Select / Copy';
      }, 1400);
    } catch (err) {
      btn.textContent = 'Blocked';
      setTimeout(() => {
        btn.textContent = 'Select / Copy';
      }, 1400);
    }
  });

  document.documentElement.appendChild(btn);
})();