post2haiku

  • /*
     * @title post2haiku
     * @description はてなハイク(http://h.hatena.ne.jp/)投稿用ボタンを設置します。
     * @license MIT License
     */
    
    // [使用例]
    // ■ボタンを設置したページのURLをキーワード、本文は空で投稿するハイクボタン
    // <script type="text/javascript" src="http://bit.ly/post2haiku"></script>
    // ■「ひとりごと」をキーワード、本文は空で投稿するハイクボタン
    // <script type="text/javascript" src="http://bit.ly/post2haiku?word=%u3072%u3068%u308A%u3054%u3068"></script>
    // ■ボタンを設置したページのURLをキーワード、本文は「このサイト面白いよ!」で投稿するハイクボタン
    // <script type="text/javascript" src="http://bit.ly/post2haiku?body=%u3053%u306E%u30B5%u30A4%u30C8%u9762%u767D%u3044%u3088%uFF01"></script>
    // ■「ひとりごと」をキーワード、本文は「このサイト面白いよ!」で投稿するハイクボタン
    // <script type="text/javascript" src="http://bit.ly/post2haiku?word=%u3072%u3068%u308A%u3054%u3068&body=%u3053%u306E%u30B5%u30A4%u30C8%u9762%u767D%u3044%u3088%uFF01"></script>
    // ■ボタンにツールチップ「ハイクで投稿」を指定する
    // <script type="text/javascript" src="http://bit.ly/post2haiku?alt=%u30CF%u30A4%u30AF%u3067%u6295%u7A3F"></script>
    //
    // [パラメータ]
    // ※encodeしたものを指定して下さい。こことか(http://bit.ly/llGHla)でescapeできます。
    // word  : キーワード(デフォルトはボタン設置したURL)
    // body  : 本文 (デフォルトは空文字)
    // alt   : ツールチップ文字列 (デフォルトは「はてなハイクに投稿」)
    //
    // [参考]
    //  http://developer.hatena.ne.jp/ja/documents/haiku/misc/forms
    //  http://nplll.com/archives/2009/04/javascript_2.php
    //  http://www.webzoit.net/hp/it/internet/homepage/script/java/escape_unescape/
    
    (function(){
    
    var configs = new Object;
    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
      var s = scripts[i];
      if (s.src && s.src.match(/bit.ly\/post2haiku(\?.*)?/)) {
        var params = s.src.replace(/.+\?/, '');
        break;
      }
    }
    params = params.split("&");
    for(var i = 0; i < params.length; i++) {
      var tmp = params[i].split("=");
      configs[tmp[0]] = unescape(tmp[1]);
    }
    
    /* パラメータ取得 */
    // 本文 (指定なしなら空文字)
    var body = configs.body ? unescape(configs.body) : '';
    // キーワード (指定なしならボタンを設置してあるURL)
    var word = configs.word ? unescape(configs.word) : location.href;
    // ツールチップ
    var imageAlt = configs.alt ? unescape(configs.alt) : 'Haiku!';
    var imageTitle = configs.alt ? unescape(configs.alt) : 'はてなハイクに投稿';
    
    /* URL作成 */
    var postUrl = 'http://h.hatena.ne.jp/?_charset_=utf-8&amp;body=' + body + '&amp;word=' + word;
    /* ボタンのイメージのURL */
    var buttonImageUrl = 'http://h.hatena.ne.jp/images/haiku-button.png';
    
    /* ボタンのHTML作成 */
    with(document){
      open();
      write('<a href="' + postUrl + '" target="_blank">');
      write('<img id="post2haikubutton" src="' + buttonImageUrl + '" alt="' + imageAlt + '" title="' + imageTitle + '"/>');
      write('</a>');
      close();
    }
    
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2011/05/25 07:23:49 - 2011-05-25
  2. 2011/05/20 23:34:22 - 2011-05-20
  3. 2011/05/20 23:20:03 - 2011-05-20
  4. 2011/05/20 23:19:25 - 2011-05-20
  5. 2011/05/20 23:14:24 - 2011-05-20
  6. 2011/05/20 23:11:29 - 2011-05-20
  7. 2011/05/20 23:07:46 - 2011-05-20
  8. 2011/05/20 22:35:07 - 2011-05-20
  9. 2011/05/20 22:32:53 - 2011-05-20
  10. 2011/05/20 22:27:42 - 2011-05-20
  11. 2011/05/20 22:19:16 - 2011-05-20
  12. 2011/05/20 22:15:24 - 2011-05-20
  13. 2011/05/20 22:09:09 - 2011-05-20
  14. 2011/05/20 22:02:25 - 2011-05-20
  15. 2011/05/20 21:54:43 - 2011-05-20
  16. 2011/05/20 21:48:11 - 2011-05-20
  17. 2011/05/20 21:45:44 - 2011-05-20
  18. 2011/05/20 21:44:28 - 2011-05-20
  19. 2011/05/20 21:41:55 - 2011-05-20
  20. 2011/05/20 21:40:20 - 2011-05-20