の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/サーバー構築メモ
永らく使ってきたCRT方式のディスプレイがいよいよおかしくなってきました。時々画面が小さくなったり一瞬消えたり。 そんなわけで液晶ディスプレイに交換します。 |
|
|
そろそろ10年になろうかというブラウン管のディスプレーですが、最近ピントがぼけてきた上に時々画面がおかしくなってきました。 だめになる前に変えなきゃナーと思いつつ、ついついそのままになっていたのですが、先日たまたま電気屋に行ったら在庫処分だか新型が出たのか何だか知らないけどやたら安く売っていたのがあってさっそく買ってきました。
液晶式の17インチ1280x1024ドットのまあまあの品物です。
電源コードとソケット式の信号線をつなぎます。この2本だけです。スピーカーの線もあったけどこれは音は出さないので不要。
さっそく電源を入れてみると今までの画面モードは自動検出であっさり表示されました。(本当は1024x768用ディスプレーだったが無理して1152x864で使っていた。これで寿命が縮んだのかもしれない。) でもせっかくもっと多くのドット数が表示できるのだからそれにしてみたくなります。
でも失敗したら元に戻すのがちょっとやっかい(テキストモードでの起動と操作が必要。相当長いことやっていない。VNCでもできるかな?) でも勇気を出してやりましょう。 /etc/X11/xorg.conf を編集 Section "Screen" に Modes "1152x864" "1024x768" "800x600" "640x480" とあるのに"1280x1024"を加えて Modes "1280x1024" "1152x864" "1024x768" "800x600" "640x480" とします。
...で、再起動
|
結果は... 表示されることは表示されましたが、画面がずいぶん左にずれています。 ディスプレイの調整では調整しきれません。どうやらビデオカードへの設定を変えなくてはいけないようです。
ターミナルを開き #xvidtune 英語でなんたらかんたら警告が出ます。よく読んで[OK] (ほんとはあまりよくわからないが、へんな設定をしてディスプレイをこわしてもしらないよ、自信がないならやめときな。と書いてあるみたい。)
[Auto]を押してさらに[Right]ボタンを押すと画面が右に動いていきます。 適当なところで[Show]ボタンを押すとコンソールにそのときの設定定数が表示されますのでそれをメモします。(あるいはコンソールを閉じずそのままにしておけばいいんだわ。)
xvidtuneは[Quit]で終了。
これでちゃんと表示されましたが再起動すると元に戻ってしまいますので、設定を起動時に適用されるようにします。
|
先ほどの/etc/X11/xorg.conf を開き Section "Monitor" の Option "dpms" の行の後に、先ほどxvidtuneから得た設定を Modeline "1280x1024" として追加。 Modeline "1280x1024" 108.0 1280 1316 1428 1688 1024 1028 1031 1066 -hsync -vsync
これで再起動してみますとちゃんと画面は表示されました。
字ははっきりとして大きいし、作業領域はぐんと広がって楽になりました。 老眼鏡なしでちゃんと読めます。めでたしめでたし。
|
|
|