小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


クリックしたボタンのラベルを取得するユーザスクリプト

クリックしたボタンのラベルを取得するユーザスクリプトを書いてみました。こんなのがなんの役に立つのと言われると答えに困りますが、Webアプリのテストでボタンのラベルをコピーしたい時がありまして、このスクリプトを書きました。
※ちなみに、IE7の場合はセキュリティレベルを中まで下げないとプロンプトが表示されません。

クリックしたボタンのラベルを取得するユーザスクリプト(ButtonLabelGetter.user.js)
// ==UserScript==
// @name           ButtonLabelGetter
// @namespace      http://d.hatena.ne.jp/replication/
// @include        *
// @description    クリックしたボタンのラベルを表示します。
// @version        0.1
// ==/UserScript==

javascript:(
  function(){
    var inputElms = document.getElementsByTagName("input");
    for(var i=0, len=inputElms.length; i<len; i++) {
      var elm = inputElms[i];
      if(elm.type == "button" || elm.type == "submit") {
        if(elm.addEventListener) {
          elm.addEventListener("click", function() { promptValue(this); }, true);
        }
        else {
          elm.attachEvent("onclick", function() { promptValue(event.srcElement); });
        }
        function promptValue(obj) {
          prompt("クリックしたボタンのラベル", obj.value);
        }
      }
    }
  }
)();
attachEventでのthisの扱い

ボタンの要素に対してonclickイベントを追加していくだけなのですが、attachEventメソッドでのthisの扱いに苦労しました。attachEventでは、thisの代わりにevent.srcElementを使うようです。
以下のサイトが参考になりました。