summaryrefslogtreecommitdiff
path: root/client/simple/src/js/main/keyboard.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/simple/src/js/main/keyboard.ts')
-rw-r--r--client/simple/src/js/main/keyboard.ts27
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();
+ }
+ }
}
};