はてなハイクの投稿フォームのキーワード欄はデフォルトでid:自分のID

はてなハイクの不満を解消するために、Greasemonkeyを入れた。昨日、書いたhttp://d.hatena.ne.jp/kits/20071216のあれ。あれを見て、せっかくだから自分も、とちょこっと書いてみた。

「名前なんてないよ、はてなハイクのアレ」スクリプト

名づけて「名前なんてないよ、はてなハイクのアレ」スクリプト

内容の説明。はてなハイクの投稿フォームのキーワード欄(上側のボックス)はデフォルトで「id:自分のID」なんです。だから、それがわかりやすく表示されるようにスクリプトを書いてみたとです。

JavaScriptわからん、Greasemonkeyなにそれ食えるの?な人が1時間ほどで書いたスクリプトなんで「実用性皆無」「特定キーワードに投稿するはずが、id:自分のIDに投稿しちゃったぜバグ」な感じに仕上がってます。物好きな人はどうぞ。

名前空間って適当にURL書いてりゃいいのかな、マジではじめて書いたので書き方があってるかわかんない)

// ==UserScript==
// @name           namae nante naiyo hatena haiku no are
// @namespace      http://d.hatena.ne.jp/eclipse-a/
// @include        http://h.hatena.ne.jp/*
// @exclude        http://h.hatena.ne.jp/settings
// @exclude        http://h.hatena.ne.jp/help
// @exclude        http://h.hatena.ne.jp/keyword
// @exclude        http://h.hatena.ne.jp/keyword/*
// ==/UserScript==

(function(){
  var user_id = '';//'id:eclipse-a';
  // user_id の取得
  var ps = document.getElementById('header').getElementsByTagName('p');
  for (var i = 0; i < ps.length; i++) {
    if (ps[i].getAttribute('class') != 'username') continue;
    var as = ps[i].getElementsByTagName('a');
    user_id = (as.length > 0) ? 'id:' + as[0].firstChild.data : user_id;
  }
  // input に handler とか設定
  var forms = document.getElementById('main').getElementsByTagName('form');
  for (var i = 0; i < forms.length; i++) {
    if (forms[i].getAttribute('class') != 'entry-form') continue;
    var inputs = forms[i].getElementsByTagName('input');
    for (var j = 0; j < inputs.length; j++) {
      var input = inputs[j];
      if ((input.getAttribute('type') == 'text') && (input.getAttribute('name') == 'word')) {
        var word = input;
        word.value = user_id;
        word.addEventListener('focus', function() { word.value = (word.value == user_id) ? '' : word.value; }, false);
        word.addEventListener('blur', function() { word.value = (word.value == '') ? user_id : word.value; }, false); 
      }
    }
  }
})();