fix: strip trailing 'Copy code' from clipboard when copying code blocks

This commit is contained in:
Claude 2026-02-27 20:06:01 +00:00
parent d9404afa4d
commit d3a0442653
No known key found for this signature in database
2 changed files with 19 additions and 0 deletions

View file

@ -0,0 +1,18 @@
/* Fix: Prevent "Copy code" button label from appearing in clipboard content.
*
* sphinxawesome_theme inserts a copy button inside <pre> elements. When
* clipboard.js selects all children of the <pre> to copy, the button's
* sr-only text ("Copy code") is included in the selection. This listener
* intercepts the copy event and strips that trailing label from the data
* written to the clipboard.
*/
document.addEventListener('copy', function (e) {
if (!e.clipboardData) { return; }
var selection = window.getSelection();
if (!selection) { return; }
var text = selection.toString();
var clean = text.replace(/\nCopy code\s*$/, '');
if (clean === text) { return; }
e.clipboardData.setData('text/plain', clean);
e.preventDefault();
}, true);

View file

@ -116,6 +116,7 @@ html_theme_options = asdict(theme_options)
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
html_css_files = ["css/custom.css"]
html_js_files = ["js/fix-copy.js"]
pygments_style = "lovelace"
pygments_style_dark = "github-dark"