copy title

alt+c to copy title link

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला 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
}