右クリックで blockquote (改訂版)

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

[要旨] 現在閲覧中の Web ページの文字列をマウスで選択後、右クリックで引用するための html ソースを生成するスクリプト(の改定版)です。
[キーワード] 引用,スクリプト

« 「今日は何の日?」のRSS、BLOGLINES対応完了 | トップページ | 右クリックで del.icio.us »

2005.01.14

右クリックで blockquote (改訂版)

今さらのような気もしますが、「右クリックで blockquote」の改定版を公開します。

前のスクリプトでは、“*” が記事(html)のタイトルに含まれるとタイトルが正しく取得できないという不具合(というか、IEコンポーネントの仕様?)があるとか、細々とした問題がいくつかあった(いずれも「運用でカバー」できるレベル)のですが、その辺の問題に関して一気に対策を施してみました。それから、本スクリプトが生成する html コードですが、たぶん、XHTML 2.0 Strict でも問題ないようになったのではないかと思います(今までのは XHTML 1.0 Transitional は OK ですが、XHTML 1.0 Strict だと NG でした)。

それでは、以下、スクリプトのソースです。(Internet Explorer 専用です。誰か、Firefox 用に移植していただけると嬉しいです)

<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<script type="text/javascript" language="JavaScript">

function translateString(str) {
    result = "";
    len    = str.length;
    rep    = 0;

    for ( i = 0; i < len; i++ ) {
        if ( str.charAt(i) == '\n' ) {
            if ( rep == 0 )
                result += '<br />';
            rep++;
            continue;
        }
        else if ( str.charAt(i) == '\r' )
            continue;
        rep = 0;

        if ( str.charAt(i) == '>' )
	    result += "&gt;";
        else if ( str.charAt(i) == '<' )
	    result += "&lt;";
        else if ( str.charAt(i) == '&' )
	    result += "&amp;";
     // else if ( str.charAt(i) == ' ' )
     //     result += "&nbsp;";
        else if ( str.charAt(i) == '"' )  // "
	    result += "&quot;";
        else
	    result += str.charAt(i);
    }

    return ( result );
}

obj = external.menuArguments;   // 右クリック時の引数のオブジェクトの参照
page_url  = obj.document.URL;   // ページのURL
title_txt = obj.document.title; // タイトル文字列
cite_txt  = obj.document.selection.createRange().text; // 引用文字列

if ( title_txt == "[object]" ) {
    str = obj.document.body.parentNode;
    inn = str.innerHTML;
    s = inn.indexOf("<TITLE>");
    e = inn.indexOf("</TITLE>");
    if ( (s > 0) && (e > s) )
        title_txt = inn.substring(s + 7, e);
}

page_str = "";
len = page_url.length;
for ( i = 0; i < len; i++ ) {
    if ( page_url.charAt(i) == '&' )
	page_str += "&amp;";
    else
	page_str += page_url.charAt(i);
}

qTag = '<blockquote cite="' + page_str + '"><p>' + translateString(cite_txt) + '</p><cite><a href="' + page_str + '">' + translateString(title_txt) + '</a></cite></blockquote>';
x = prompt('',qTag);
</script>

投稿者: tsupo 2005.01.14 午後 03:05 | 固定リンク | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数 | 酢鶏巡回中

楽天市場


品揃え豊富で安い!NTT-X Store


アマゾンわくわく探検隊

トラックバック

この記事のトラックバックURL:

この記事へのトラックバック一覧です: 右クリックで blockquote (改訂版):

» 選択範囲を引用する from blog
PCを更新して,環境もだいぶ整ってきましたが,「観測気球」さんの↓の記事を読んで,右クリックで簡単に引用する環境が復旧していない事を思い出しました. 続きを読む

受信: 2005.01.16 午前 11:13

» 右クリックで blockquote (改訂2版) from 観測気球
Bloglines で読んでいる記事を、オリジナルの記事(Webページ)を参照することなく、直接引用できるようにしてみました。 続きを読む

受信: 2005.06.09 午後 02:20

コメント

ワード

ニッセン

fujisan.co.jp

楽天市場