summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extension/background.js10
-rw-r--r--extension/currentURL.js11
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()