はてブロ This

  • /*
     * @title はてブロ This
     * @description 閲覧ページをもとにはてなブログを作成
     * @include https://*
     * @license MIT License
     * @require
     * @javascript_url
     */
    
    
    (()=>{
    
      const editURL = "https://blog.hatena.ne.jp/my/edit";
      let selectTxt = window.getSelection().toString();
    
      location.href = editURL + '?body=' + htmlspecialchars(selectTxt) + getCanonicalURL() + getHashTags();
       
      function htmlspecialchars(s){
        if((s != '')){
        s.replace(/&/g ,'&')
         .replace(/"/g,'"')
         .replace(/</g, '&lt;')
         .replace(/>/g,  '&gt;');
        }
        return encodeURIComponent(s);
      }
       
    /*
        The quoted text does not use Hatena notation.  location href use embed link notation.
    */
    
     
      function getCanonicalURL(){
        const canlink=document.querySelector('link[rel="canonical"')||"";
        return '%0A' + '%5B' + encodeURIComponent(canlink.href||location.href) + '%3Aembed%5D' + '%0A';
      }
    
    /*
        Hashtag extraction is rel-tag only
    */
    
      function getHashTags(){
        const tags = document.querySelectorAll('a[rel^="tag"]')||"";
        var tagLabel = Array.from(tags, e=> e.textContent.replace(/^#+/,'').replace(/(.*)/ , '#'+ '$1'));
        return encodeURIComponent(tagLabel.join(' '));
      }
      void(0);
    })();
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2021/04/07 22:11:48 - 2021-04-07
  2. 2021/04/07 22:05:33 - 2021-04-07