-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathcopy-code.js
More file actions
35 lines (31 loc) · 1.08 KB
/
copy-code.js
File metadata and controls
35 lines (31 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('pre code').forEach(function (codeBlock) {
var button = document.createElement('button');
button.className = 'btn btn-xs btn-default copy-btn';
button.innerHTML = '<i class="fa fa-copy"></i>';
button.title = 'Copy to clipboard';
var pre = codeBlock.parentNode;
pre.style.position = 'relative';
pre.insertBefore(button, codeBlock);
button.addEventListener('click', function () {
var text = codeBlock.innerText;
if (navigator.clipboard) {
navigator.clipboard.writeText(text).then(success);
} else {
var ta = document.createElement('textarea');
ta.value = text;
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
success();
}
function success() {
button.innerHTML = '<i class="fa fa-check"></i>';
setTimeout(function () {
button.innerHTML = '<i class="fa fa-copy"></i>';
}, 2000);
}
});
});
});