diff --git a/dist/highlightjs-copy-button.min.js b/dist/highlightjs-copy-button.min.js index 3598a6b..1854ba6 100644 --- a/dist/highlightjs-copy-button.min.js +++ b/dist/highlightjs-copy-button.min.js @@ -1,2 +1,2 @@ /*! highlightjs-copy-button v1.0.5 */ -(function(i){var h="hljs-button",j="hljs-ln-code",a="Copy",e="Error",d="Copied";String.prototype.format=String.prototype.f=function(){var l=arguments;return this.replace(/\{(\d+)\}/g,function(o,p){return l[p]?l[p]:o})};if(typeof i.hljs==="undefined"){console.error("highlight.js not detected!")}else{i.hljs.initCopyButtonOnLoad=f;i.hljs.addCopyButton=k;i.hljs.copyCode=g;c()}function g(n){var o=n.target||n.srcElement;if(o.className===h){n.preventDefault();var l=document.getElementById("post-id-target");if(!l){l=document.createElement("textarea");l.style.position="absolute";l.style.left="-9999px";l.style.top="0";l.id="hljs-copy-el";document.body.appendChild(l)}l.textContent=n.currentTarget.innerText;l.select();try{var p=document.execCommand("copy");o.dataset.title=p?d:e;if(p){setTimeout(function(){o.dataset.title=a},2000)}}catch(m){o.dataset.title=e}}}function c(){var l=document.createElement("style");l.type="text/css";l.innerHTML=([".hljs{position: relative}",".hljs:hover .{0}{display: block}",".{0}{","display: none;","position: absolute;","right: 0;","top: 0;","background-color: white;","padding: 2px 10px;","margin: 3px;","border-radius: 5px;","border: 1px solid darkgray;","cursor: pointer;","box-shadow: 0 1px 1px rgba(0,0,0,0.12), 0 1px 1px rgba(0,0,0,0.24);","}",".{0}:after{","content: attr(data-title)","}"].join("")).format(h);document.getElementsByTagName("head")[0].appendChild(l)}function f(){if(document.readyState==="complete"){b()}else{i.addEventListener("DOMContentLoaded",b)}}function b(){try{var n=document.querySelectorAll("code.hljs");for(var l in n){if(n.hasOwnProperty(l)){k(n[l])}}}catch(m){console.error("CopyButton error: ",m)}}function k(l){if(typeof l!=="object"){return}l.innerHTML=l.innerHTML+('
').format(h,a);l.setAttribute("onclick","hljs.copyCode(event)")}}(window)); \ No newline at end of file +(function(w){var BLOCK_NAME="hljs-button",LN_CLASS="hljs-ln-code",TEXT_COPY="Copy",TEXT_ERROR="Error",TEXT_COPIED="Copied";String.prototype.format=String.prototype.f=function(){var args=arguments;return this.replace(/\{(\d+)\}/g,function(m,n){return args[n]?args[n]:m})};if(typeof w.hljs==="undefined"){console.error("highlight.js not detected!")}else{w.hljs.initCopyButtonOnLoad=onLoad;w.hljs.addCopyButton=addCopyButton;w.hljs.copyCode=copyCode;addStyles()}function copyCode(event){var target=event.target||event.srcElement,scrolltop=document.documentElement.scrollTop;if(target.className===BLOCK_NAME){event.preventDefault();var el=document.getElementById("post-id-target");if(!el){el=document.createElement("textarea");el.style.position="absolute";el.style.left="-9999px";el.style.top=scrolltop+"px";el.id="hljs-copy-el";document.body.appendChild(el)}el.textContent=event.currentTarget.innerText;el.select();try{var successful=document.execCommand("copy");target.dataset.title=successful?TEXT_COPIED:TEXT_ERROR;if(successful){setTimeout(function(){target.dataset.title=TEXT_COPY},2000)}}catch(err){target.dataset.title=TEXT_ERROR}}}function addStyles(){var css=document.createElement("style");css.type="text/css";css.innerHTML=(["pre{position: relative}","pre:hover .{0}{display: block}",".{0}{","display: none;","position: absolute;","right: 0;","top: 0;","background-color: white;","padding: 2px 10px;","margin: 3px;","border-radius: 5px;","border: 1px solid darkgray;","cursor: pointer;","box-shadow: 0 1px 1px rgba(0,0,0,0.12), 0 1px 1px rgba(0,0,0,0.24);","}",".{0}:after{","content: attr(data-title)","}"].join("")).format(BLOCK_NAME);document.getElementsByTagName("head")[0].appendChild(css)}function onLoad(){if(document.readyState==="complete"){documentReady()}else{w.addEventListener("DOMContentLoaded",documentReady)}}function documentReady(){try{var blocks=document.querySelectorAll("code.hljs");for(var i in blocks){if(blocks.hasOwnProperty(i)){addCopyButton(blocks[i].parentNode)}}}catch(e){console.error("CopyButton error: ",e)}}function addCopyButton(element){if(typeof element!=="object"){return}element.innerHTML=element.innerHTML+('').format(BLOCK_NAME,TEXT_COPY);element.setAttribute("onclick","hljs.copyCode(event)")}}(window)); \ No newline at end of file diff --git a/src/highlightjs-copy-button.js b/src/highlightjs-copy-button.js index 6736086..d4bfc1e 100644 --- a/src/highlightjs-copy-button.js +++ b/src/highlightjs-copy-button.js @@ -27,7 +27,8 @@ } function copyCode(event) { - var target = event.target || event.srcElement; + var target = event.target || event.srcElement, + scrolltop = document.documentElement.scrollTop; // firefox get scrollTop,chrome Unable to get, if (target.className === BLOCK_NAME) { event.preventDefault(); @@ -36,7 +37,7 @@ el = document.createElement("textarea"); el.style.position = "absolute"; el.style.left = "-9999px"; - el.style.top = "0"; + el.style.top = scrolltop + 'px'; el.id = 'hljs-copy-el'; document.body.appendChild(el); } @@ -61,8 +62,8 @@ var css = document.createElement('style'); css.type = 'text/css'; css.innerHTML = ( [ - '.hljs{position: relative}', - '.hljs:hover .{0}{display: block}', + 'pre{position: relative}', + 'pre:hover .{0}{display: block}', '.{0}{', 'display: none;', 'position: absolute;', @@ -97,7 +98,7 @@ for (var i in blocks) { if (blocks.hasOwnProperty(i)) { - addCopyButton(blocks[i]); + addCopyButton(blocks[i].parentNode); } } } catch (e) {