クリックしたボタンのラベルを取得するユーザスクリプトを書いてみました。こんなのがなんの役に立つのと言われると答えに困りますが、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を使うようです。
以下のサイトが参考になりました。