Koohi story copier with html

Copy stories from kanji koohii page

目前為 2018-03-29 提交的版本,檢視 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Koohi story copier with html
// @namespace    https://kanji.koohii.com
// @version      0.2
// @description  Copy stories from kanji koohii page
// @author       You
// @match        https://kanji.koohii.com/study/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var stories = document.getElementsByClassName("story");

    for(var i=0; i<stories.length; i++) {
        // Create copy button
        var copyButton = document.createElement("span");
        copyButton.appendChild(document.createTextNode("Copy"));
        copyButton.style = "cursor: pointer";
        stories[i].insertAdjacentElement("afterend", copyButton);

        (function(copyButton, storyText) {
            copyButton.addEventListener("click", () => copyStory(copyButton, storyText));
        })(copyButton, stories[i].textContent);

        // Create copy raw button
        var copyButtonRaw = document.createElement("span");
        copyButtonRaw.appendChild(document.createTextNode("Copy raw, "));
        copyButtonRaw.style = "cursor: pointer";
        stories[i].insertAdjacentElement("afterend", copyButtonRaw);

        (function(copyButtonRaw, copyButton, storyText) {
            copyButtonRaw.addEventListener("click", () => copyStory(copyButton, storyText));
        })(copyButtonRaw, copyButton, stories[i].innerHTML);
    }

    function copyStory(button, storyText) {
        // console.log(storyText);

        // create input field so we can coppy the text
        var copyField = document.createElement("input");
        copyField.value = storyText;
        button.insertAdjacentElement("afterend", copyField);

        // copy the text in input field
        copyField.select();
        document.execCommand("copy");

        setTimeout(
            function() {
                copyField.parentElement.removeChild(copyField);
            }, 500);
    }
})();