Greasy Fork is available in English.
Atcoderの問題のページに問題タイトルをクリップボードにコピーするボタンを追加します
- // ==UserScript==
- // @name Atcoder Title Copy
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Atcoderの問題のページに問題タイトルをクリップボードにコピーするボタンを追加します
- // 拡張子を問題タイトルの最後につけることも可能です
- // @author sin471
- // @match https://atcoder.jp/contests/*/tasks/*
- // @grant none
- // @license MIT
- //
- // ==/UserScript==
- /* ユーザー設定項目 */
- /*
- A - AtCoder → A - AtCoder.js
- のように、デフォルトで拡張子をつける場合は、
- ダブルクオテーションの中に拡張子を入力
- */
- const extension = "";//ex: ".js"
- /*
- Copied!を表示する時間を変更
- デフォルトでは1500ms(1.5秒)
- */
- const sleepTime = 1500
- /* 設定項目終わり */
- function copy() {
- var title = document.getElementsByClassName("h2")[0];
- //改行文字を削除
- var text = title.firstChild.textContent.trim();
- //ユーザーの設定した拡張子を追加
- text += extension;
- navigator.clipboard.writeText(text);
- };
- // ミリ秒間待機する
- function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
- async function notifyCopied(a) {
- a = this.name;
- a.textContent = "Copied!";
- await sleep(1500);
- a.textContent = "Copy";
- };
- function create_button() {
- var parent = document.getElementsByClassName("h2");
- var a = document.createElement("a");
- a.textContent = "Copy";
- //AtcoderのCopyボタンと同じCSSを適用
- a.setAttribute("class", "btn btn-default btn-sm");
- parent[0].appendChild(a);
- a.addEventListener('click', copy, false);
- //ボタン内のテキスト内容を一定時間"Copied!"に書き換え
- a.addEventListener('click', { name: a, handleEvent: notifyCopied });
- };
- create_button();