diff options
-rw-r--r-- | extension/background.js | 10 | ||||
-rw-r--r-- | extension/currentURL.js | 11 |
2 files changed, 21 insertions, 0 deletions
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() |