copy title

alt+c to copy title link

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name           copy title
// @description    alt+c to copy title link
// @name:en        copy title
// @description:en alt+c to copy title link
// @name:ko        페이지 제목 복사
// @description:ko alt+c로 페이지 제목 링크 복사
// @namespace      https://greasyfork.org/ko/users/713014-nanikit
// @version        240207
// @author         nanikit
// @match          *://*/*
// @grant          none
// ==/UserScript==
'use strict';

addEventListener('keydown', (event) => {
  if (event.altKey && event.code === 'KeyC') {
    copyTitle();
  }
});

async function copyTitle() {
  const anchor = createTitleAnchor();
  await setClipboard([
    new Blob([anchor.outerHTML], { type: 'text/html' }),
    new Blob([anchor.innerText], { type: 'text/plain' })
  ]);
}

async function setClipboard(blobs) {
  const item = blobs.reduce((data, blob) => (data[blob.type] = blob, data), {});
  await navigator.clipboard.write([new ClipboardItem(item)]);
}

function createTitleAnchor(){
  const titleText = document.title;
  const anchor = document.createElement('a');
  anchor.href = document.location.href;
  anchor.innerText = titleText;
  return anchor
}