From 21211d7db819d057ac5f54295a70e807f14430fc Mon Sep 17 00:00:00 2001 From: huhongyun Date: Thu, 2 Jan 2020 19:11:24 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=202.=20=E4=BF=AE=E5=A4=8D=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=90=8E=EF=BC=8C=E6=97=A0=E6=B3=95=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=89=8D=E5=8F=B0js=E6=96=87=E4=BB=B6=E9=97=AE?= =?UTF-8?q?=E9=A2=98=203.=20=E4=BF=AE=E5=A4=8D=E5=8A=A0=E8=BD=BD=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E6=8F=92=E4=BB=B6=E6=97=B6=EF=BC=8CjQuery=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=87=86=E5=A4=87=E5=AE=8C=E6=88=90=EF=BC=8C=E6=97=A0?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Plugin.php | 22 ++++++------- codecopy.js | 75 +++++++++++++++++++++++-------------------- 3 files changed, 143 insertions(+), 46 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbd7d1a --- /dev/null +++ b/.gitignore @@ -0,0 +1,92 @@ +# Created by .ignore support plugin (hsz.mobi) +### Node template +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +.idea/ diff --git a/Plugin.php b/Plugin.php index f88b124..14ece9d 100644 --- a/Plugin.php +++ b/Plugin.php @@ -1,8 +1,8 @@ - * - * @package CodeCopy + * + * @package CodeCopy * @author 兔子昂 * @version 1.0.0 * @link https://www.tuziang.com @@ -10,7 +10,7 @@ class CodeCopy_Plugin implements Typecho_Plugin_Interface { /** * 激活插件方法,如果激活失败,直接抛出异常 - * + * * @access public * @return void * @throws Typecho_Plugin_Exception @@ -22,7 +22,7 @@ public static function activate() { /** * 禁用插件方法,如果禁用失败,直接抛出异常 - * + * * @static * @access public * @return void @@ -32,7 +32,7 @@ public static function deactivate(){} /** * 获取插件配置面板 - * + * * @access public * @param Typecho_Widget_Helper_Form $form 配置面板 * @return void @@ -44,7 +44,7 @@ public static function config(Typecho_Widget_Helper_Form $form){ /** * 个人用户的配置面板 - * + * * @access public * @param Typecho_Widget_Helper_Form $form * @return void @@ -53,12 +53,12 @@ public static function personalConfig(Typecho_Widget_Helper_Form $form){} /** * 插件实现方法 - * + * * @access public * @return void */ public static function render() { - + } /** @@ -66,7 +66,7 @@ public static function render() { *@return void */ public static function header() { - + } /** @@ -74,8 +74,8 @@ public static function header() { *@return void */ public static function footer() { - - $path = Helper::options()->pluginUrl . '/codecopy/'; + + $path = Helper::options()->pluginUrl . '/CodeCopy/'; echo ''; } } diff --git a/codecopy.js b/codecopy.js index 0b01fb7..d95d0ed 100644 --- a/codecopy.js +++ b/codecopy.js @@ -1,9 +1,11 @@ -//html5 给typecho添加 复制代码 功能 +//html5 给typecho添加 复制代码 功能 // by 兔子昂 -var codeblocks = document.getElementsByTagName("pre") +// fixed by xiaomiwujiecao +$(function () { + var codeblocks = document.getElementsByTagName("pre") //循环每个pre代码块,并添加 复制代码 -for (var i = 0; i < codeblocks.length; i++) { + for (var i = 0; i < codeblocks.length; i++) { //显示 复制代码 按钮 currentCode = codeblocks[i] currentCode.style = "position: relative;" @@ -16,46 +18,49 @@ for (var i = 0; i < codeblocks.length; i++) { currentCode.appendChild(copy) //让所有 "复制"按钮 全部隐藏 copy.style.visibility = "hidden" -} + } -for (var i = 0; i < codeblocks.length; i++) { + for (var i = 0; i < codeblocks.length; i++) { !function (i) { - //鼠标移到代码块,就显示按钮 - codeblocks[i].onmouseover = function () { - codeblocks[i].childNodes[1].style.visibility = "visible" - } - - //执行 复制代码 功能 - function copyArticle(event) { - const range = document.createRange(); - - //范围是 code,不包括刚才创建的div - range.selectNode(codeblocks[i].childNodes[0]); - - const selection = window.getSelection(); - if (selection.rangeCount > 0) selection.removeAllRanges(); - selection.addRange(range); - document.execCommand('copy'); - - codeblocks[i].childNodes[1].innerHTML = "复制成功" - setTimeout(function () { - codeblocks[i].childNodes[1].innerHTML = "复制" - }, 1000); - //清除选择区 - if (selection.rangeCount > 0) selection.removeAllRanges(); 0 - } - codeblocks[i].childNodes[1].addEventListener('click', copyArticle, false); + //鼠标移到代码块,就显示按钮 + codeblocks[i].onmouseover = function () { + codeblocks[i].childNodes[1].style.visibility = "visible" + } + + //执行 复制代码 功能 + function copyArticle(event) { + const range = document.createRange(); + + //范围是 code,不包括刚才创建的div + range.selectNode(codeblocks[i].childNodes[0]); + + const selection = window.getSelection(); + if (selection.rangeCount > 0) selection.removeAllRanges(); + selection.addRange(range); + document.execCommand('copy'); + + codeblocks[i].childNodes[1].innerHTML = "复制成功" + setTimeout(function () { + codeblocks[i].childNodes[1].innerHTML = "复制" + }, 1000); + //清除选择区 + if (selection.rangeCount > 0) selection.removeAllRanges(); + 0 + } + + codeblocks[i].childNodes[1].addEventListener('click', copyArticle, false); }(i); !function (i) { - //鼠标从代码块移开 则不显示复制代码按钮 - codeblocks[i].onmouseout = function () { - codeblocks[i].childNodes[1].style.visibility = "hidden" - } + //鼠标从代码块移开 则不显示复制代码按钮 + codeblocks[i].onmouseout = function () { + codeblocks[i].childNodes[1].style.visibility = "hidden" + } }(i); -} + } +})