Form Extractor beta

久しぶりにJavaScriptを書いてみた。あるページを開いているときに、このスクリプトを実行することにより、クリップボードにフォームのHTMLを必要最小限に削ってコピーしてくれる。

function ExtractFormMinimum(form) {
    var innerhtml = "";
    function ExtractinnerHTML(tagname) {
        var elements = form.getElementsByTagName(tagname);
        for (var i = 0; i < elements.length; i++) {
             innerhtml += elements[i].outerHTML;
        }
    }
    ExtractinnerHTML("textarea");
    ExtractinnerHTML("input");
    ExtractinnerHTML("select");
    var newform = form.cloneNode(true);
    //newform.setAttribute("action", joinPath(location.href, newform.getAttribute("action")));
    newform.innerHTML =  innerhtml;
    return newform.outerHTML;
}
var i = 0;
var form;
var formhtml;
var color = "";
do {
    try{
        form.style.background = color;
    }catch(e){}
    try{
        form = document.getElementsByTagName("form")[i++];
        formhtml = ExtractFormMinimum(form).replace("\n", "").replace("\r", "");
        color = form.style.background;
        form.style.background = "red";
        clipboardData.setData("Text", formhtml);
    }
    catch(e){
        break;
    }
}
while (!confirm(formhtml));
    try{
        form.style.background = color;
    }catch(e){}
alert("Ok!");


実用的には

  • javascript:function ExtractFormMinimum(form){var innerhtml="";function ExtractinnerHTML(tagname){var elements=form.getElementsByTagName(tagname);for(var i=0;i

というアドレスへのショートカットを作って、そのアドレスへ移動すればよい。(最後の//ははてなダイアリーの仕様かバグかで後ろに変な文字列がくっつくので、それを無効化させるためw)
実際に実行すると、formタグを検索し、一個ずつ抽出結果を表示していく。必要なのが表示されたら、そのときにOKを押せば、内容がクリップボードにコピーされる。

ごめんなさい。まだいろいろ不完全なので、betaということで。

formのaction属性のパスを絶対URLにしたいけど、それがめんどくさくてできていません。C#ならライブラリあるのに…C#ずっとやってると、ゆとりになってしまうw