の形で呼ぶ。
//
// 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);
}
//-->
IRORIBATA
使い方
<HTML>内では、空白(スペース)をたくさん入れてもその通り表示されません。また文章内にタグの使用を許可する都合上、タグに使うブラケット"<"や">"もうまく表示されません。 そのためこれらを表示するために一工夫必要でした。 |
|
|
空白の表示
ホームページ内(<HTML></HTML>内)では半角の空白(スペース)" "をいくら入れてもたかだか1個しか表示されません。特に行頭と行末のは全く無視されるようです。 少しなら" "を書くのですが、たくさんあるとめんどうです。 自動で" "に変換すると今度はタグの中のスペースまで変換されてタグが使えません。 そこで空白の代わりに普段あまり使わないバックスラッシュ"`"を書けば空白に変換されるようにしています。 バックスラッシュそのものを表示するときには\でエスケープして"\`"とすれば表示されます。 ここの頭にスペースを4個入れた。(たぶん表示されない) ここの頭にバックスラッシュを4個入れた。(スペースとして表示) ````ここの頭にバックスラッシュをエスケープして4個入れた。(バックスラッシュとして表示)日本語の空白はそのまま空白として表示されますが、半角スペースではないのでプログラムソースの中などには使えません。 document.write("この行の頭に日本語の空白を4個入れた。");
|
その他特殊文字の表示
文章内にタグの使用を許す関係上"<"や">"もそのまま書くとタグとみなされ表示されません。また&も特殊文字指定に使われ、その場合は特殊文字に変換されて記述そのものは表示されません。必要に応じてこれらをHTMLの要素とせず単にそのままの表示もしたいとなるとちょっぴりめんどうなことが必要になります。
"<"や">"を表示するには、HTMLの"&...;"の特殊文字指定のほかに"\"でエスケープする方法、入力しやすいよう2連打する方法を準備してあります。 単に"<TAG>"と書くと→ "<", "\<", "<<"を書くと → <, <, < ">", "\>", ">>"を書くと → >, >, > よって"<<TAG>>"と書くと→<TAG>
また"&"もHTMLの文字指定の記述とみなされる場合(&など)では変換されてしまい、書いたのをそのまま表示できません。この場合"\&...."とすることによりこれを回避できます。 &← "&"と書いた &← "\&"と書いた
これらの方法で表示した場合はいずれもタグや文字指定とはみなされません。 <!-- これもコメントとみなされずにそのまま表示される -->
|
|
|
|