PageSourceSearch

https://whj363636.github.io/assets/js/copy.js?v=20260629c

js whj363636.github.io collected 2026-10-03 10:10:14 UTC 1,809 bytes, 55 lines download raw bytes

1function setButtonClass(button, className, enabled) {
2    if (button.classList) {
3        enabled ? button.classList.add(className) : button.classList.remove(className);
4        return;
5    }
6
7    var classes = button.className.split(/\s+/).filter(Boolean);
8    var hasClass = classes.indexOf(className) !== -1;
9    if (enabled && !hasClass) {
10        classes.push(className);
11    } else if (!enabled && hasClass) {
12        classes = classes.filter(function(item) { return item !== className; });
13    }
14    button.className = classes.join(' ');
15}
16
17function copyToClipboard(var1, button) {
18    var source = document.getElementById(var1);
19    if (!source) {
20        return false;
21    }
22
23    var val = (source.textContent || source.innerText || source.innerHTML || '').trim();
24    var selBox = document.createElement('textarea');
25    selBox.style.position = 'fixed';
26    selBox.style.left = '0';
27    selBox.style.top = '0';
28    selBox.style.opacity = '0';
29    selBox.value = val;
30    document.body.appendChild(selBox);
31    selBox.focus();
32    selBox.select();
33    document.execCommand('copy');
34    document.body.removeChild(selBox);
35
36    if (button) {
37        if (!button.dataset.copyOriginalText) {
38            button.dataset.copyOriginalText = button.textContent;
39        }
40        if (button.dataset.copyTimer) {
41            clearTimeout(Number(button.dataset.copyTimer));
42        }
43
44        button.textContent = 'Copied';
45        setButtonClass(button, 'is-copied', true);
46        button.setAttribute('aria-live', 'polite');
47        button.dataset.copyTimer = setTimeout(function() {
48            button.textContent = button.dataset.copyOriginalText || 'BibTeX';
49            setButtonClass(button, 'is-copied', false);
50            delete button.dataset.copyTimer;
51        }, 1200);
52    }
53
54    return false;
55}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.