南極の図書館

ペンギンが寝ていた…。

「初めてのJavaScript 第2版」その4(8章)

本日は第8章を読んだ。
1日で100ページ(3章分)くらい読めるのでは、と思っていたのだが想像以上に難解だった。


サンプルコードが長くなり、また誤植っぽいものが出てきたのでサポートページを参照した。(今更)
今までは気になったところだけ自分で書いて検証していたが辛くなってきた。
(誤植らしきところで正誤表にないものは申請した。)

第8章 フォームと検証

submitの戻り値がfalseならば送信はキャンセルされる。
保守を考えると「イベント処理関数」を作るとよい。
ポイントは、前章にあったとおり、DOM2対応か、IEか、それ以外か、の3パターンで処理を変えること。
キャンセルの汎用関数も同様に。


・複数選択項目の動的変更

P162 コメントはholyppが書いた。
opts[opts.length] = new Option("選択肢6", "opt6");
opts[2] = null;   //で3番目の配列がきえ配列がリセットされる(詰まる)
opts.length = 0;   //でオプションが全部消える。

・ラジオボタンとチェックボックス

P166 コメントはholyppが書いた。
var buttons =
 document.getElementById("someForm").getElementsByTagName("input");  
 //someFormのinputタグがついているものをまとめてbuttons[]に格納する。

P169
for(var i = 0; i < textInputs.length; i++){
 if (textInputs[i].type != "submit"){
  strResults += textInputs[i]value + "_n";
 }
}
document.getElementById("text4").value = strResults;
cancelEvent(theEvent);

このコードはわかりやすい。サポートページの例8-5を参照してほしい。


・テキストの検証

P171
カーソルがテキスト入力フィールドに移動するとfocusイベントが発せられ、カーソルが離れるとblurイベントが発せられます。
カーソルがフィールドから離れたとき、その内容に多少でも変更があれば、changeイベントが発せられます。

また、あまり関係ないのだが、P175に正規表現の例が数点あり。


・同一ドメインポリシー

あるウェブサイトでメインページの背後に小さなポップアップウィンドウをオープンさせた状態で、銀行などほかサイトへのアクセスを続けた場合、ポップアップウィンドウのjavascriptが別のページで行われている操作を「盗み見」することができます。同一ドメインポリシーでは、こうした行為を禁止することになるのです。
終わりに

イベント処理関数を作るのが基本だと学んだ。
ブラウザごとに処理する、というのを以下のような一つの関数にまとめるのは確かに基本だ。

function chk(a, b, c)
if (a.addEventListener){
 (略)
 }else if (a.attachEvent){
 (略2)
 }
}

あとは読めばわかること。
明日は9章から。もう少し進めると思っていたのに。