<!doctype html>
<html lang="en" class="theme-bubblegum">
<head>
    <title>chringel.dev</title>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta name="author" content="Christian Engel">
    <meta name="description" content="Christian Engel's personal blog about coding, spatial stuff and everything else">
    <meta name="generator" content="Eleventy v3.0.0">
    <meta name="theme-color" content="#ffffff">

    <!-- Social -->
    <meta property="og:title" content="Bookmarklet">
    <meta property="og:type" content="website">
    <meta property="og:site_name" content="chringel.dev">
    <meta property="og:description" content="Christian Engel's personal blog about coding, spatial stuff and everything else">
    <meta property="og:image" content="https://chringel.dev/og-image/bookmarklet">
    <meta property="og:url" content="https://chringel.dev/bookmarklet">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:image" content="https://chringel.dev/og-image/bookmarklet">

    <meta property="article:published_time" content="2024-07-11T14:06:32.395+02:00">
    <link rel="authorization_endpoint" href="https://indieauth.com/auth">
    <link rel="token_endpoint" href="https://tokens.indieauth.com/token">
    <link rel="webmention" href="https://jam.chringel.dev/webmention">
    <link rel="pingback" href="https://jam.chringel.dev/pingback">

    <meta name="robots" content="index,follow">
    <link rel="canonical" href="https://chringel.dev/bookmarklet">

    <link rel="preload" href="/fonts/space-grotesk-v13-latin-regular.woff2" as="font" type="font/woff2" crossorigin="crossorigin">
    <link rel="preload" href="/fonts/space-grotesk-v13-latin-700.woff2" as="font" type="font/woff2" crossorigin="crossorigin">
    <link rel="stylesheet" href="/css/index.css?v=1720699628">
    <link rel="stylesheet" href="/bundle/z87_1WK_lJ.css">
    <script async defer data-website-id="59e2e93a-9a05-4d4c-b671-33eaec1b46f7" src="https://analytics.chringel.dev/script.js"></script>
    <script src="/js/main.js?v=1720699628" defer type="module"></script>
    <script src="/bundle/2XxLyr40xB.js" defer type="module"></script>
    <script defer src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
  </head>
  <body>
    <div class="layout">
      <header class="container flex items-center justify-between py-8">
  <div class="wvoeca8pa">
  <input type="checkbox" id="side-menu" class="side-menu">
  <label for="side-menu" class="hamb"><span class="hamb-line"></span></label>
  <nav class="nav">
    <ul class="menu">
      <li>
        

<a href="/" class="unset animated-link">Home</a>

      </li>
<li>
        

<a href="/blog/" class="unset animated-link">Blog</a>

      </li>
<li>
        

<a href="/notes/" class="unset animated-link">Notes</a>

      </li>
<li>
        

<a href="/about/" class="unset animated-link">About Me</a>

      </li>
    </ul>
  </nav>
</div>



  <div class="flex items-center">
    <div class="text-text-bold">
      <a href="https://github.com/chringel21" title="Christian Engel on Github" rel="me" class="unset ml-4 rounded-sm transition-[background-size] duration-150 ease-in-out bg-left-bottom bg-[length:0%_55%] hover:bg-[length:100%_55%] bg-no-repeat bg-gradient-to-r from-primary-yellow to-primary-yellow dark:bg-none dark:hover:text-primary-yellow no-logo">
  
        <span><svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" class="icon undefined">
    <use xlink="http://www.w3.org/1999/xlink" href="/sprites/icons.svg#svg-logo-github"></use>
  </svg>
</span>
      </a>

      <a href="https://fosstodon.org/@chringel" title="Christian Engel on Mastodon" rel="me" class="unset ml-4 rounded-sm transition-[background-size] duration-150 ease-in-out bg-left-bottom bg-[length:0%_55%] hover:bg-[length:100%_55%] bg-no-repeat bg-gradient-to-r from-primary-yellow to-primary-yellow dark:bg-none dark:hover:text-primary-yellow no-logo">
  
        <span><svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" class="icon undefined">
    <use xlink="http://www.w3.org/1999/xlink" href="/sprites/icons.svg#svg-logo-mastodon"></use>
  </svg>
</span>
      </a>

    </div>
    <mode-toggle class="flex wojollrse">
  <button id="webc-QPYgn" role="switch" type="button" tabindex="0" aria-checked="false" data-headlessui-state class="justify-self-end bg-black dark:bg-white ml-4 inline-flex h-6 w-11 items-center rounded-full">
    <span class="sr-only">Toggle dark mode</span>
    <span id="mode-circle" class="light inline-block h-4 w-4 rounded-full bg-gradient-to-tr invisible">
      <span class="absolute top-0 right-0 w-[10px] h-[10px] rounded-full bg-gray-700 scale-[0]"></span>
    </span>
  </button>
</mode-toggle>





  </div>
</header>

      <main id="main" class="main container"><a href="javascript:(function(){let title=document.getElementsByTagName(&quot;title&quot;)[0].innerHTML;title=encodeURIComponent(title);let selection=&quot;&quot;;if (window.getSelection) {selection=window.getSelection().toString();} else if (document.selection &amp;&amp; document.selection.type !== &quot;Control&quot;) {selection=document.selection.createRange().text;}selection=encodeURIComponent(selection);const url=`https://chringel.dev/share/?title=${title}&amp;text=${selection}&amp;url=+${encodeURIComponent(document.location.href)}`;const opts=&quot;resizable,scrollbars,status=0,toolbar=0,menubar=0,titlebar=0,width=680,height=700,location=0&quot;;window.open(url, &quot;Sharer&quot;, opts);})();" class="p-1 w-fit cursor-grab bg-primary-green border-lime-700 border text-sm unset hover:text-bg-body">Share on chringel.dev</a>


<!-- prettier-ignore --><pre tabindex="0" class="language-javascript"><code class="language-javascript">  <span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><br>    <span class="token comment">// get link title</span><br>    <span class="token keyword">let</span> title <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementsByTagName</span><span class="token punctuation">(</span><span class="token string">"title"</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>innerHTML<span class="token punctuation">;</span><br>    title <span class="token operator">=</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>title<span class="token punctuation">)</span><span class="token punctuation">;</span><br><br>    <span class="token comment">// get optional text selection</span><br>    <span class="token keyword">let</span> selection <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span><br>    <span class="token keyword">if</span> <span class="token punctuation">(</span>window<span class="token punctuation">.</span>getSelection<span class="token punctuation">)</span> <span class="token punctuation">{</span><br>      selection <span class="token operator">=</span> window<span class="token punctuation">.</span><span class="token function">getSelection</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br>    <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>document<span class="token punctuation">.</span>selection <span class="token operator">&amp;&amp;</span> document<span class="token punctuation">.</span>selection<span class="token punctuation">.</span>type <span class="token operator">!==</span> <span class="token string">"Control"</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><br>      selection <span class="token operator">=</span> document<span class="token punctuation">.</span>selection<span class="token punctuation">.</span><span class="token function">createRange</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>text<span class="token punctuation">;</span><br>    <span class="token punctuation">}</span><br>    selection <span class="token operator">=</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>selection<span class="token punctuation">)</span><span class="token punctuation">;</span><br><br>    <span class="token comment">// generate share URL</span><br>    <span class="token keyword">const</span> url <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">https://chringel.dev/share/?title=</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>title<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">&amp;text=</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>selection<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">&amp;url=+</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token function">encodeURIComponent</span><span class="token punctuation">(</span><br>      document<span class="token punctuation">.</span>location<span class="token punctuation">.</span>href<br>    <span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span><br><br>    <span class="token comment">// open popup window to sharing form</span><br>    <span class="token keyword">const</span> opts <span class="token operator">=</span><br>      <span class="token string">"resizable,scrollbars,status=0,toolbar=0,menubar=0,titlebar=0,width=680,height=700,location=0"</span><span class="token punctuation">;</span><br>    window<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span>url<span class="token punctuation">,</span> <span class="token string">"Sharer"</span><span class="token punctuation">,</span> opts<span class="token punctuation">)</span><span class="token punctuation">;</span><br>  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>

</main>
      <footer class="flex flex-wrap justify-center items-center gap-8 text-sm mt-16 border-t border-border-code py-8 w57eqmt2_">
  <p class="text-center">
    CC-BY 4.0
    <span class="h-card">
      <a href="https://chringel.dev/" rel="me" class="unset gradient-link tracking-wider font-bold bg-clip-text text-transparent bg-gradient-to-r from-[#f57111] to-[#f79605] hover:after:bg-gradient-to-r hover:after:from-[#f57111] hover:after:to-[#f79605] u-url p-name">Christian Engel</a>
      <img loading="lazy" decoding="async" src="/img/vqjxFKbWTk-200.webp" alt="Christian Engel" width="200" height="200" class="hidden u-photo">
      <span class="hidden p-note">Hi, I'm Christian Engel, software engineer by profession, blogger, photographer and open-source enthusiast by passion.</span>
    </span>
    <br>
    Legal stuff:
    <a href="/imprint" class="unset gradient-link tracking-wider font-bold bg-clip-text text-transparent bg-gradient-to-r from-[#00abda] to-[#1476ff] hover:after:bg-gradient-to-r hover:after:from-[#00abda] hover:after:to-[#1476ff]">
      Imprint</a>
    •
    <a href="/privacy-policy" class="unset gradient-link tracking-wider font-bold bg-clip-text text-transparent bg-gradient-to-r from-[#00abda] to-[#1476ff] hover:after:bg-gradient-to-r hover:after:from-[#00abda] hover:after:to-[#1476ff]">
      Privacy Policy</a>
  </p>
  
  <a href="https://github.com/chringel21/chringel.dev/blob/main/./content/blog/2022/google-maps-clone-part-2/index.md" class="hidden md:block">Edit this page on GitHub</a>
</footer>



    </div>
    
  

</body>
</html>