サーバーに置いてあるtxtファイルをブラウザで表示させて、内容を確認しています。

1行ずつに1レコードという感じなのですが、最新レコードが一番下に来るため、
いちいちブラウザを一番下までスクロールしないとならず、不便です。

ブラウザはFirefoxを使用しているのですが、GreaseMonkeyのJavascriptなどで、
最新レコードを一番上(データの並び順を逆転)にして表示させる方法はないでしょうか。

間にcgiをかまして、表示する方法しかないようでしたら、方法を教えてください。

回答の条件
  • 1人5回まで
  • 登録:2009/12/20 08:35:03
  • 終了:2009/12/21 23:20:18

ベストアンサー

id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/12/20 16:03:53

ポイント23pt

2回目失礼します。

ページ最下部にジャンプするだけのものも作ってみました。

並べ替えが発生しない分、レスポンスは比較にもなりません。

お望みのものとは異なりますが、お試しを。

// ==UserScript==
// @name           jumptobottomline
// @auther         kn1967
// @namespace
// @description    jump to bottom line
// @include        *
// @exclude
// ==/UserScript==
if (location.href.match(/\.txt$/i)) {
    window.scrollBy(0, document.body.offsetHeight);
}
id:sachipanda

ありがとうございます!

こちらを使わせていただこうと思います!

2009/12/21 15:44:12

その他の回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/12/20 12:46:26

ポイント23pt

ユーザースクリプトを作ってみた。

// ==UserScript==
// @name           txtReverse
// @auther         kn1967
// @namespace
// @description    text Reverse
// @include        *
// @exclude
// ==/UserScript==
if (location.href.match(/\.txt$/i)) {
    document.body.firstChild.innerHTML = 
        document.body.firstChild.innerHTML.split(/\r\n|\r|\n/g).reverse().join('\n')
    ;
}

※Firefoxの余計なお世話によって、一行目に

 <HTML><BODY><PRE>

 というゴミが残る。これの消し方は申し訳ないけれど判らない。

※ファイルサイズの上限に関しては環境依存の部分も大きいので試していない。

※要望どおり逆順にしていますが、クライアントサイトの負担を考えると、

 最終行まで一気に移動するようなスクリプトのほうが賢いかもしれない。

※CGIで処理する場合もほぼ同様に数行で出来上がるけれど、

 設置の手間がかかるので、今回は割愛してます。

※技術的質問の場合はコメント欄を開けておくと応答が速くなる場合もあるし、

 詳しくは知らないけど、こんなのはどう?というような意見が集まる場合もあり、

 個人的には開けておくことを推奨。

id:sachipanda

ありがとうございます!大変助かります!

並べ変えると確かにデータ量が多いと負荷がかかりますね。

ジャンプするだけの方を使ってみたいと思います。

コメントの件もアドバイスありがとうございます。気をつけるようにします。

2009/12/21 15:43:57
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/12/20 16:03:53ここでベストアンサー

ポイント23pt

2回目失礼します。

ページ最下部にジャンプするだけのものも作ってみました。

並べ替えが発生しない分、レスポンスは比較にもなりません。

お望みのものとは異なりますが、お試しを。

// ==UserScript==
// @name           jumptobottomline
// @auther         kn1967
// @namespace
// @description    jump to bottom line
// @include        *
// @exclude
// ==/UserScript==
if (location.href.match(/\.txt$/i)) {
    window.scrollBy(0, document.body.offsetHeight);
}
id:sachipanda

ありがとうございます!

こちらを使わせていただこうと思います!

2009/12/21 15:44:12
id:gogg45 No.3

gogg45回答回数117ベストアンサー獲得回数182009/12/20 15:35:52

ポイント22pt

tacコマンドを使えば行単位で並べ替えを行うことが出来ます。

テキスト表示コマンド...

http://cyberam.dip.jp/linux_command/command/text_view/tac.html

CGIで以下のような処理を実装して、ボタンなどでこの処理が実行できるようにし

tac file1.txt > file2.txt

ブラウザからは「file2.txt」のファイルを見るのが、作る手間がかからない一番シンプルな方法だと思います。

id:sachipanda

ありがとうございます!一番良いのはCGIの設置ですよね。

今はサーバーまではいじれないので、もうちょっとしたら、

参考にさせていただこうと思います。

2009/12/21 15:45:02
id:Cherenkov No.4

Cherenkov回答回数1503ベストアンサー獲得回数4932009/12/20 16:15:01

ポイント22pt

Firefoxで動けばいいやというブックマークレット。

javascript:p=document.querySelector("pre");p.textContent=p.textContent.split("\n").reverse().join("\n");
id:sachipanda

ありがとうございます!これならGreaseMonkey入れてないFirefoxでもOKですね。

私が使用しているMac Firefox3.5.6だと、並べ替えはされるのですが、

データ毎の改行がなくなってしまうようです。

(全部改行されず、データが表示される)

何か設定が必要なのでしょうか。

2009/12/21 15:47:01
  • id:kn1967
    回答1補足:
    回答4を参考にさせていただき、
    innerHTML を textContent に変更すればゴミはでなくなりました。

    回答1/2補足:
    既にご存知かもしれませんが @include が * なので、
    すべてのサイトが対象になってます。
    例えば http://q.hatena.ne.jp/* といったような具合に、
    サーバを特定しておいたほうがよろしいかと思います。

    回答3補足:
    シェルコマンドで、事前に逆順にしたファイルを作っておけって案なので、
    質問への回答としてはちょっと違いますね。
    CGIからtacコマンドを呼び出して使うという手もあるけど、
    レンタルサーバーだと使えない可能性のほうが高いですし・・・。

    回答1/4未確認だけど補足:
    最終出力用として結合(join)する際には¥nではなく¥rを用いてみてください。
  • id:Numeric
    試してみましたが、\rでもだめでした。
    brでjoinしたものをinnerHTMLに代入すればうまくいきます。

    javascript:p=document.querySelector("pre");p.innerHTML=p.textContent.split("\n").reverse().join("<br />");
  • id:sachipanda
    ありがとうございます!innerHTMLに代入する方法で上手くいきました!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません