Firefox WebExtension (Desktop and Mobile) that lets you share the current tab to Margit.at, frontpage.fyi, etc. with minimal effort.
1const CONTEXT_CHARS = 150;
2
3browser.runtime.onMessage.addListener((message) => {
4 if (message.type !== "margin-get-selection") return;
5
6 const selection = window.getSelection();
7 if (!selection || selection.isCollapsed) {
8 return Promise.resolve({ selection: null });
9 }
10
11 const exact = selection.toString().trim();
12 if (!exact) return Promise.resolve({ selection: null });
13
14 let prefix = "";
15 let suffix = "";
16 try {
17 const range = selection.getRangeAt(0);
18
19 const prefixRange = document.createRange();
20 prefixRange.selectNodeContents(document.body);
21 prefixRange.setEnd(range.startContainer, range.startOffset);
22 prefix = prefixRange.toString().slice(-CONTEXT_CHARS);
23
24 const suffixRange = document.createRange();
25 suffixRange.selectNodeContents(document.body);
26 suffixRange.setStart(range.endContainer, range.endOffset);
27 suffix = suffixRange.toString().slice(0, CONTEXT_CHARS);
28 } catch {
29 // context extraction failed, proceed without it
30 }
31
32 return Promise.resolve({ selection: { exact, prefix, suffix } });
33});