diff options
Diffstat (limited to 'client/simple/src/js/main/keyboard.ts')
| -rw-r--r-- | client/simple/src/js/main/keyboard.ts | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/client/simple/src/js/main/keyboard.ts b/client/simple/src/js/main/keyboard.ts index b5e5d4edc..f165a601a 100644 --- a/client/simple/src/js/main/keyboard.ts +++ b/client/simple/src/js/main/keyboard.ts @@ -407,12 +407,31 @@ const toggleHelp = (keyBindings: typeof baseKeyBinding): void => { }; const copyURLToClipboard = async (): Promise<void> => { - const currentUrlElement = document.querySelector<HTMLAnchorElement>(".result[data-vim-selected] h3 a"); - assertElement(currentUrlElement); + const selectedResult = document.querySelector<HTMLElement>(".result[data-vim-selected]"); + if (!selectedResult) return; - const url = currentUrlElement.getAttribute("href"); + const resultAnchor = selectedResult.querySelector<HTMLAnchorElement>("a"); + assertElement(resultAnchor); + + const url = resultAnchor.getAttribute("href"); if (url) { - await navigator.clipboard.writeText(url); + if (window.isSecureContext) { + await navigator.clipboard.writeText(url); + } else { + const selection = window.getSelection(); + if (selection) { + const node = document.createElement("span"); + node.textContent = url; + resultAnchor.appendChild(node); + + const range = document.createRange(); + range.selectNodeContents(node); + selection.removeAllRanges(); + selection.addRange(range); + document.execCommand("copy"); + node.remove(); + } + } } }; |