- // ==UserScript==
- // @name              replace copy flash on Discuz
- // @name:zh-CN        替换Discuz的复制flash
- // @description       Replace the "click here to copy" flash on Discuz
- // @description:zh-CN 替换Discuz论坛的"点此复制到剪贴板"flash
- // @namespace         https://github.com/Testla
- // @version           0.9.1
- // @include           http*://www.tsdm.me/*
- // @include           http*://www.lightnovel.cn/*
- // @match             http://*.bathome.net/*
- // @author            Testla
- // @license           MIT License
- // @compatible        firefox 57 + Greasemonkey4/Tampermonkey tested
- // @compatible        chrome + Tampermonkey
- // @require           https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
- // @grant             GM.info
- // @grant             GM.setClipboard
- // @grant             GM_info
- // @grant             GM_setClipboard
- // @grant             unsafeWindow
- // ==/UserScript==
-
- (function() {
-     'use strict';
-
-     // There are two versions available,
-     // the non-privileged version doesn't use privileged API
-     // but doesn't support Greasemonkey 4+
-     // and may be incompatible with some old browsers
-     // (check https://developer.mozilla.org/en-US/docs/Web/API/document/execCommand#Browser_compatibility).
-     // To switch to the non-privileged version:
-     // 1. remove all @require and @grant in the header
-     // 2. add @grant none to the same place
-     // 3. comment out the privileged version
-     // 4. uncomment the non-privileged version
-
-     // ---------------- BEGIN PRIVILEGED VERSION ----------------
-     // If you only run on Greasemonkey 4+, you can remove the @require.
-     // If you need not to run on Greasemonkey 4+,
-     // you can remove the @require line together with the @grant GM.*s
-     // and replace all "GM." with "GM_".
-     // Note that the "@grant GM_*"s are required for Tampermonkey in Chrome
-     // even if the corresponding "@grant GM.*"s and gm4-polyfill already exists,
-     // please let me know if you can figure out why.
-
-     function copyAndHint(text) {
-         GM.setClipboard(text);
-         // showPrompt comes with Discuz
-         unsafeWindow.showPrompt(null, null, 'Copied', 3000);
-     }
-
-     function setCopy(text, hint) {
-         copyAndHint(text);
-     }
-
-     function copycode(code_div) {
-         copyAndHint(code_div.textContent);
-     }
-
-     var greasemonkey4OrGreater = GM.info.scriptHandler == 'Greasemonkey' &&
-                                  parseFloat(GM.info.version) >= 4.0;
-     if (greasemonkey4OrGreater) {
-         // uses Firefox-specific hack
-         // https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts
-         exportFunction(copyAndHint, window, {defineAs:'copyAndHint'});
-         window.eval(
-             'window.setCopy = function(text, hint) { copyAndHint(text); };' +
-             'window.copycode = function(code_div) { copyAndHint(code_div.textContent); };');
-     } else {
-         unsafeWindow.setCopy = setCopy;
-         unsafeWindow.copycode = copycode;
-     }
-     // ---------------- END PRIVILEGED VERSION ----------------
-
-     // ---------------- BEGIN NON-PRIVILEGED VERSION ----------------
-     // var copyTextarea = document.createElement("textarea");
-     // copyTextarea.style.width = "0px";
-     // copyTextarea.style.height = "0px";
-     // copyTextarea.style.position = "fixed";
-
-     // // https://stackoverflow.com/questions/400212
-     // function copyAndHint(text) {
-     //     document.body.appendChild(copyTextarea);
-     //     copyTextarea.textContent = text;
-     //     copyTextarea.select();
-
-     //     try {
-     //         var successful = document.execCommand('copy');
-     //         var msg = successful ? 'succeeded' : 'failed';
-     //         showPrompt(null, null, 'Copy ' + msg, 3000);
-     //     } catch (err) {
-     //         showPrompt(null, null, 'Oops, unable to copy', 3000);
-     //         console.log(err);
-     //     }
-     //     document.body.removeChild(copyTextarea);
-     // }
-
-     // window.setCopy = function(text, hint) {
-     //     copyAndHint(text);
-     // };
-
-     // window.copycode = function(code_div) {
-     //     copyAndHint(code_div.textContent);
-     // };
-     // ---------------- END NON-PRIVILEGED VERSION ----------------
-
-     console.log('finished replacing Discuz\'s copy flash');
- })();
复制代码 |