« iPadとiPodの誤読/空目を防ぐ効果的な方法 | メイン | 【添削求む】Javaで多次元を扱えるArrayListっぽいクラスを作ってみた »

選択範囲をGistに保存するBookmarklet(再掲)

2010/01/30 追記
このブックマークレットを公開したあと、CSRFではないかと指摘を頂きました。
仕様と考えていたのですが、確かにセキュリティホールにも見えたため、一旦記事を削除し、GitHub社に問い合わせました。
回答は、「コマンドラインやサードパーティ製のアプリケーションからもGistを作成できるようにするための仕様」との事なので再掲載します。
ちなみにこのAPIは将来的に削除する可能性もあるとの事です。
追記ここまで
以前こんなブックマークレットを書きました。
これの応用とGist APIを使ってこんなものを作りました。
/*
================================================================================
    Name        :   選択範囲をGistに保存するBookmarklet Ver1.0.0
    In          :   [none]      
    Out         :   [none]      
    Note        :   選択範囲の文字列(utf-8のみ)をGistに保存します。
--------------------------------------------------------------------------------
    Version     :   Ver1.0.0    |   2010/01/28  |   新規作成
--------------------------------------------------------------------------------
    License     :   MIT license
    URL         :   www.kanasansoft.com
================================================================================
*/

(
    function(w,d,s,c,a,g,p,n){
        var
             t=d[c]("textarea")
            ,f=d[c]("form")
            ,i=d[c]("iframe")
            ;
        if(d[p]){
            s=d[p].createRange().text
        }else if(d[g]){
            s=d[g]()
        }else if(w[g]){
            s=w[g]()
        }
        i.name=n;
        t.value=s;
        t.name="files["+n+".txt]";
        f.method="post";
        f.action="http://gist.github.com/api/v1/plaintext/new";
        f.target=n;
        f.style.displey="none";
        f[a](i);
        f[a](t);
        d.body[a](f);
        f.submit();
    }
)
(window,document,"","createElement","appendChild","getSelection","selection",(location+"_gist_"+Math.random()).replace(/[^\d\w]+/g,"_"))
GitHubへログイン中でないと使えません。
残念な点は日本語だとUTF-8しか動作しなさそうな点。
少なくともShift JISは文字化けしました。
確認はしていないのですが文字数的にはIEでも使えるはずです。
2010/01/28 追記
Gist API+JavaScriptを使うと他人のGistのレポジトリに勝手にソースを突っ込めるって事だよなぁ。
色々試してみたところ、Gist APIはCreateはできてもUpdateは不可能みたいだけど...。

コメントを投稿

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

Google

タグ クラウド