はてな俳句風味

  • /*
     * @title はてな俳句風味
     * @description はてなハイクをちょっとだけはてな俳句風にします。
     * @license MIT License
     */
    
    var style = document.createElement('div');
    style.innerHTML = '<style>.hatena-star-add-button-image { background-image: url("/images/add-sakura.gif"); } .hatena-star-star-image { background-image: url("/images/sakura.gif"); } img.hatena-star-add-button, img.hatena-star-star { vertical-align: middle !important; } .hatena-star-inner-count { color: #FB7B9C; font-size: 80%; margin: 0 2px; } form.entry-form input.haiku-word { background: url("/images/haiku-word.gif") no-repeat scroll 3px 50% transparent; padding-left: 24px; } form.entry-form input.entry-body-1, form.entry-form input.entry-body-3 { background: url("/images/haiku-5.gif") no-repeat scroll 3px 50% transparent; padding-left: 24px; } form.entry-form input.entry-body-2 { background: url("/images/haiku-7.gif") no-repeat scroll 3px 50% transparent; padding-left: 24px; } input.entry-body-1, input.entry-body-3 { width: 10em; } input.entry-body-2 { width: 15em; } body, div.streamheader h1 { font-family:"MS P 明朝", serif }</style>';
    document.body.appendChild(style);
    
    var stars = Ten.DOM.getElementsByClassName('hatena-star-star');
    for (var i = 0; i < stars.length; i++) {
      stars[i].src = '/images/sakura.gif';
    }
    Hatena.Star.Star.ColorPallet.yellow.ImgSrc = '/images/sakura.gif';
    
    var stars = Ten.DOM.getElementsByClassName('hatena-star-add-button');
    for (var i = 0; i < stars.length; i++) {
      stars[i].src = '/images/add-sakura.gif';
    }
    Hatena.Star.AddButton.ImgSrc = '/images/add-sakura.gif';
    
    var script = document.createElement('script');
    script.src = 'http://h.hatena.ne.jp/js/Hatena/Haiku/HaikuChecker.js';
    document.body.appendChild(script);
    
    var entryBody = Ten.DOM.getElementsByClassName('entry-body')[0];
    entryBody.style.display = 'none';
    
    var div = document.createElement('div');
    div.innerHTML = '<input type="text" class="text haiku-body entry-body-1" name="body" /><br /><input type="text" class="text haiku-body entry-body-2" name="body" /><br /><input type="text" class="text haiku-body entry-body-3" name="body" />';
    entryBody.parentNode.insertBefore(div, entryBody);
    
    var form = entryBody.form;
    var submit = Ten.DOM.getElementsByClassName('submit', form)[0];
    
    var button = document.createElement('input');
    button.className = submit.className;
    button.value = '投句!';
    button.type = 'button';
    button.onclick = function () {
      if (Hatena.Haiku.HaikuChecker.checkForm({form: form})) {
        var inputs = Ten.DOM.getElementsByTagAndClassName('input', 'haiku-body', form);
        if (inputs.length == 3) {
          entryBody.value = inputs[0].value + "\n" + inputs[1].value + "\n" + inputs[2].value;
          Ten.DOM.removeClassName(entryBody, 'ten-placeholder');
          inputs[0].value = '';
          inputs[1].value = '';
          inputs[2].value = '';
        }
        submit.click();
      }
    };
    
    submit.style.display = 'none';
    submit.parentNode.insertBefore(button, submit);
    
    void(0);
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2011/04/01 01:02:37 - 2011-04-01
  2. 2011/04/01 01:01:51 - 2011-04-01
  3. 2011/04/01 00:52:15 - 2011-04-01
  4. 2011/04/01 00:47:24 - 2011-04-01