# Del på Mastodon frå Obsidian Publish Eg har ein liten «Del på Mastodon»-knapp nedst på kvar side her på markus.plus no. Obsidian Publish støttar ei fil som heiter `publish.js` i rota av vaultet din. Ho blir lasta inn på kvar einaste side, og du kan bruka ho til å kjøra JavaScript. Det krev at du har eit eige domene. Mastodon lanserte nyleg [share.joinmastodon.org](https://share.joinmastodon.org) for å laga delingslenkjer. Det er ein open teneste som sender deg til din eigen Mastodon-instans med ein ferdigskriven tut. Teksten eg set inn er tittelen på sida og URL-en, slik: `Tittel - https://markus.plus/side`. Sidan Obsidian Publish er ein SPA (single-page app) og lastar inn innhald utan å lasta heile sida på nytt, måtte eg bruka ein `MutationObserver` for å oppdaga når nytt innhald dukkar opp — og nullstilla knappen kvar gong URL-en endrar seg. Tittelen hentar eg frå `document.title`, som Obsidian Publish alltid held oppdatert ved navigasjon. Formatet er `Sidetittel - Markus+`, så eg striper suffixet for å få ein rein tittel. Her er koden du kan kopiera inn i di eiga `publish.js`: ```javascript function insertMastodonShareButton() { const footer = document.querySelector(".mod-footer.mod-ui"); if (!footer) return; if (footer.querySelector(".mastodon-share-btn")) return; const pageUrl = window.location.href; // document.title er "Sidetittel - Nettstadens namn" — strip suffixet const title = document.title.replace(/\s*-\s*[^-]+$/, "").trim() || document.title; const shareText = encodeURIComponent(`${title} - ${pageUrl}`); const shareUrl = `https://share.joinmastodon.org/#text=${shareText}`; const wrapper = document.createElement("div"); wrapper.className = "mastodon-share-btn"; wrapper.style.cssText = "text-align:left; padding:2rem 0 1rem 0;"; const a = document.createElement("a"); a.href = shareUrl; a.target = "_blank"; a.rel = "noopener"; a.style.cssText = "display:inline-flex; align-items:center; gap:10px; background:#6364ff; color:#fff; text-decoration:none; font-size:16px; font-weight:500; padding:8px 16px 8px 20px; border-radius:999px;"; const label = document.createTextNode("Del på Mastodon "); const img = document.createElement("img"); img.src = "https://joinmastodon.org/logos/logo-purple.svg"; img.style.cssText = "width:24px; height:24px; background:#fff; border-radius:50%; padding:3px;"; img.alt = "Mastodon"; a.appendChild(label); a.appendChild(img); wrapper.appendChild(a); footer.appendChild(wrapper); } function removeButton() { document.querySelector(".mod-footer.mod-ui .mastodon-share-btn")?.remove(); } let lastUrl = location.href; let lastTitle = document.title; new MutationObserver(() => { const currentUrl = location.href; const currentTitle = document.title; if (currentUrl !== lastUrl || currentTitle !== lastTitle) { lastUrl = currentUrl; lastTitle = currentTitle; removeButton(); } const footer = document.querySelector(".mod-footer.mod-ui"); if (footer && !footer.querySelector(".mastodon-share-btn")) { insertMastodonShareButton(); } }).observe(document.body, { childList: true, subtree: true }); ``` Legg fila i rota av vault-en, og publiser ho. Sidan `.js`-filer ikkje syner i Obsidian-appen, må du leggja ho direkte i vault-mappa di med Finder eller Utforskar, så dukkar ho opp i publiseringsdialogens filliste. Vil du berre ha hjelp til å byggja delings-URL-en og setja saman teksten sjølv, er her ein meir kompakt variant: ```javascript function getMastodonShareUrl() { const url = window.location.href; const title = document.title.replace(/\s*-\s*[^-]+$/, "").trim() || document.title; return "https://share.joinmastodon.org/#text=" + encodeURIComponent(`${title} - ${url}`); } ``` Kall `getMastodonShareUrl()` der du treng lenkja — i ein knapp, eit ikon, eller kva du vil.