« Kanasansoft BlogEditorのテンプレートの作成方法 | メイン | 文字列の操作を行うjavaScript Classを更新 »

任意のコードを実行するBookmarklet Ver1.1.1

/*
================================================================================
    Name        :   任意のコードを実行するBookmarklet Ver1.1.1
    In          :   [none]      
    Out         :   [none]      
    Note        :   "window.opener"を使用し親ウィンドウ上でスクリプトを実行させる事ができます
--------------------------------------------------------------------------------
    Version     :   Ver1.0.0    |   2004/12/10  |   新規作成
                :   Ver1.1.0    |   2005/03/31  |   textareaに wrap="off"を追加
                :   Ver1.1.1    |   2006/12/19  |   Operaでレイアウトが崩れる不具合を修正
                :               |               |   LicenseをNew BSD licenseに変更
--------------------------------------------------------------------------------
    License     :   New BSD license
    URL         :   www.kanasansoft.com
================================================================================
*/

(
    function(){

        var s=window.open();
        with(s.document){
            open();
            write("<html><head><title>run!</title><style><!--body{margin:0px;padding:0px;}textarea{width:100%;height:45%;font-size:12px;font-family:monospace;}--></style></head><body><input type=\"button\" value=\"run\" onclick=\"eval(document.getElementById(\&quot;code\&quot;).value)\"><br><textarea id=\"code\" wrap=\"off\"></textarea><textarea id=\"out\" wrap=\"off\" readonly></textarea></body></html>");
            close()
        }

    }
)
()
自作のBookmarkletで一番の使用頻度、開発やデバッグに重宝している。実行すると別ウィンドウが開き、「run」ボタンとテキストエリア2つが表示される。上のテキストエリアがJavaScriptの入力欄、下のテキストエリアが出力欄となっている。例えば、
document.getElementById("o").value=window.opener.document.getElementsByTagName("div").length;
と入力し、「run」ボタンを押すと、親ウィンドウ内のdivタグ数が表示される。また、親ウィンドウ側に
var stringbuf="abc";
と(Globalで)宣言されていた場合、
document.getElementById("o").value=window.opener.stringbuf;
で、参照できる。更に、
window.opener.stringbuf="def";
で書き変えることさえできる。同様な機能は、FirefoxのDOM Inspectorを利用することで可能である。しかし、このBookmarkletはIE等他のブラウザでも利用できる。そして、JavaScriptで処理ができるためループ等で一括して処理することさえできる。Functionオブジェクトの書き換えも可能だ。Webアプリケーション開発者、特にテキストエディタで開発している人や、デバッグのためにalertを多用している人にはおすすめだと思う。

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/12

この一覧は、次のエントリーを参照しています: 任意のコードを実行するBookmarklet Ver1.1.1:

» [.js][Bookmarklet] js.bml[3] = ’Run!++’ 送信元 ’ellaneous
任意のコードを実行するBookmarklet Ver1.1.1 (Kanasansoft Web Lab.) 似たようなものは(ページに直接埋め込むタイ... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google