From 0bbe831bcd186bd36b5f7b6b1c239a90c7dca5dd Mon Sep 17 00:00:00 2001 From: Simon Parri Date: Tue, 23 Sep 2025 09:10:45 -0500 Subject: Add tabs/by-id/*/capture-url.txt for current URL+text fragment --- extension/background.js | 10 ++++++++++ extension/currentURL.js | 11 +++++++++++ 2 files changed, 21 insertions(+) create mode 100644 extension/currentURL.js diff --git a/extension/background.js b/extension/background.js index c6cf5b8..1b8960a 100644 --- a/extension/background.js +++ b/extension/background.js @@ -326,6 +326,10 @@ Routes["/tabs/by-id"] = { return (await browser.tabs.executeScript(tabId, {code}))[0]; }); + const routeFromScriptFile = file => makeRouteWithContents(async ({tabId}) => { + return (await browser.tabs.executeScript(tabId, {file}))[0]; + }); + Routes["/tabs/by-id/#TAB_ID/url.txt"] = { description: `Text file containing the current URL of this tab.`, usage: ['cat $0', @@ -349,6 +353,12 @@ Routes["/tabs/by-id"] = { ...routeFromScript(`document.body.innerHTML`) }; + Routes["/tabs/by-id/#TAB_ID/capture-url.txt"] = { + description: `Text file containing the current URL + text fragment of this tab.`, + usage: 'cat $0', + ...routeFromScriptFile("/currentURL.js") + }; + Routes["/tabs/by-id/#TAB_ID/active"] = { description: 'Text file containing `true` or `false` depending on whether this tab is active in its window.', usage: ['cat $0', diff --git a/extension/currentURL.js b/extension/currentURL.js new file mode 100644 index 0000000..0aeab92 --- /dev/null +++ b/extension/currentURL.js @@ -0,0 +1,11 @@ +function encode(str) { + return encodeURIComponent(str).replace("-", "%2D") +} + +let sel = window.document.getSelection(), + ctx = sel?.anchorNode?.parentElement?.textContent?.split(sel), + anc = sel.toString() ? `:~:text=${ctx[0] ? encode(ctx[0])+"-," : ""}${sel}${ctx[1] ? ",-"+encode(ctx[1]) : ""}` : "" + +let url = new URL(window.location) +if (anc) url.hash = anc +url.toString() -- cgit v1.2.3