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

観測気球

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

[要旨] Bloglines で読んでいる記事を、オリジナルの記事(Webページ)を参照することなく、直接引用できるようにしてみました。
[キーワード] bloglines,引用,記事

« jbooklet をアップデートしました | トップページ | 右クリックで はてなブックマーク、ついでに del.icio.us (改訂版) »

2005.06.09

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

右クリックで blockquote (改訂版)」の更なる改訂版です。

今回の改訂で、オンラインRSSリーダ Bloglines で読んでいる記事をそのまま引用、言及できるようにしてみました。オリジナルの記事(Webページ)を参照することなく、そのまま引用、言及できるのがポイントです。 なお、Bloglines のモードは、英語でも、日本語でも構いません。

Bloglines 以外に、はてなRSSにも対応しようと思ったんですが、はてなRSS の場合は、記事本文中にはてなダイアリーキーワードへのリンクが含まれるため、Bloglines に対応のに使った方法がそのままでは使えず、ちょっとやっかいなので、対応するのを見送りました。

それでは、以下、ソースです。

<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<script type="text/javascript" language="JavaScript">

// 「右クリックで blockquote」
//     written by H.Tsujimura (tsupo@na.rim.or.jp)
//
//     Version 1.2   9 Jun 2005  Bloglines で読んでいる記事をそのまま引用
//                               できるようにした
//     Version 1.1  14 Jan 2005  '*' が記事(html)のタイトルに含まれるとタ
//                               イトルが正しく取得できないという不具合
//                               (IEコンポーネントの仕様?)への対策を実施
//     Version 1.0  25 Feb 2004  最初の版

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

    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 += "&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; // 引用文字列
inn       = obj.document.body.innerHTML;

if ( (cite_txt != "") && (cite_txt.length > 0) ) {
    if ( page_url.match("http://www.bloglines.com/myblogs_display") ||
         page_url.match("http://bloglines.com/myblogs_display")        ) {
        // for Bloglines
        loc = inn.indexOf(cite_txt);
        if ( loc > 0 ) {
            locH3 = inn.substring(0,loc).lastIndexOf("a title=");
            if ( locH3 > 0 ) {
                targetString = inn.substring(locH3,loc);
                locHREF = targetString.indexOf("href=");
                if ( locHREF > 0 ) {
                    targetHREF  = targetString.substring(locHREF + 7,targetString.indexOf('\\" target='));
                    targetTITLE = targetString.substring(targetString.indexOf('" target=')+16,targetString.indexOf("</a>"));
                    if ( targetHREF != "" )
                        page_url  = targetHREF;
                    if ( targetTITLE != "" )
                        title_txt = targetTITLE;
                }
            }
        }
    }
}

if ( title_txt == "[object]" ) {
    /* title に '*' が含まれている場合にうまく取り込めない現象への対策 */
    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>

関連記事: 右クリックで blockquote (改訂版)右クリックで blockquote

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

楽天市場


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


アマゾンわくわく探検隊

トラックバック

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

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

コメント

ワード

ニッセン

fujisan.co.jp

楽天市場