window.addEventListener("load", function() { if (navigator.appName != "Microsoft Internet Explorer") // Older IE gets Microsoft Internet Explorer, so works with newer that get Netscape { var pre = document.getElementsByTagName('pre'), pl = pre.length; for (var i = 0; i < pl; i++) { var num = pre[i].innerText.replace(/\s+$/g, "").split(/\n/).length; pre[i].innerHTML = '' + pre[i].innerHTML + '';; for (var j = 0; j < num; j++) { var line_num = pre[i].getElementsByTagName('span')[0]; line_num.innerHTML += '' + (j + 1) + ''; } } } }) window.addEventListener("click", function(e) { function selectCode(e) { var sel = window.getSelection(); if (sel) { sel.removeAllRanges(); var range = document.createRange(); try { var span = e.firstChild, s = span; if (span) if (span.tagName == "SPAN") if (span.className == "line-number") s = span.nextSibling; range.setStartBefore(s); range.setEndAfter(e.lastChild); } catch (er) { var span = e.firstChild; if (span) if (span.tagName == "SPAN") if (span.className == "line-number") span.style.display = "none"; range.selectNodeContents(e); }; sel.addRange(range); } } function copyToClipboard(e) { var sel = window.getSelection(); if (sel) { selectCode(e); document.execCommand('copy'); sel.removeAllRanges(); } } var tag = e.target.tagName; if (tag) { if (e.offsetY < 8) { if (tag == "PRE") // select code selectCode(e.target); } else if (tag == "PRE") if (e.offsetY > e.target.clientHeight - 8) // copy copyToClipboard(e.target); } })