JavascriptTips



FrontPage > IndexPage > JavascriptTips

○JavaScript?関連
------------------------------------------------------------

■aタグのjavascriptスキーム

a href タグの属性に "javascript:<JavaScript?の文>"と書くのは、場合によって推奨されないが誤りではない。

javascript: というスキームはIANAに登録されていないが使ってはいけない、とは書いていないので、URIにjavascript:というスキームを使うのは誤りではない。

推奨されないのはアクセシビリティ上の理由で、javascript:スキームでしかリンク先が提供されていないと、JavaScript?を使わない/使えない環境でリンクを辿れなくなってしまうから。


■window.onload

onloadと関数の呼び出しについて
http://www5e.biglobe.ne.jp/~purest/javascript/zakki/onload.html
フレームがwindow.onloadで表示されてくれません
http://www.tohoho-web.com/lng/199911/99110128.htm
ボタンでフレームの大きさを変えるには?
http://www.tohoho-web.com/lng/199911/99110135.htm
新JavaScript?入門 1. はじめのいっぽ
http://homepage3.nifty.com/aya_js/js2/js201.htm

bodyタグ等に書けるイベントハンドラ onLoad と
オブジェクトwindow.onloadは違う。

onLoadはイベントハンドラで、
onLoad="alert('Hello,World!');"
のようにJavaScript?の文を値にもつ。

onloadオブジェクトは
「ウィンドウを開いた時に実行される関数オブジェクト」
を指す。
このため、ある関数
function func(){
...;
}

が定義されている時、呼び出し方として

window.onload="func()";

や

window.onload=func();

は間違い。

window.onload=func;

が正解。


■無名関数の実行

‐普通の関数定義と実行
//定義
function myalert(mes){
  window.alert(mes);
}

//実行
myalert('Hello,World!');

‐関数定義と関数オブジェクトの生成は等価である

//定義
var myalert = new Function("mes","alert(mes);");

//実行
myalert('Hello,World!');

‐無名関数による関数定義
//定義
var myalert = function(mes){alert(mes);}

//実行
myalert('Hello,World!');

‐無名関数に名前をつけずにいきなり実行する

// 定義、即実行
(function(mes){alert(mes);})('Hello,World!');

λ式を思い出すなぁ。

参考:
関数もオブジェクトである
http://starry.night.nu/web/prog/javascript/c02_know_base_of_function.html#a_function_is_a_object


■連想配列のキー指定とオブジェクトのメンバ指定は等価
list["first"] と list.first は同じオブジェクト list の
メンバ first を指す。
例えば
  list["first"] = 1;
  document.write(list.first);
とすると、document.writeは 1 を返す。

参考:
CodeZine?:JavaScript?におけるオブジェクトの基本的性質
http://codezine.jp/a/article.aspx?aid=220
『メンバのアクセスには二通りの方法がある』の項。


■ JavaScript?のイベントオブジェクト
**Internet Explorer
IEにはwindow.eventというオブジェクトがあり、現在発生しているイベントの情報を参照可能。

**Netscape Navigator,Mozilla Firefox
NNやFirefoxはタグで onLoad="func()"と書いたりイベントハンドラに対応する関数オブジェクトでwindow.onload=func とした時に、関数定義の func の引数がイベントハンドラになる。

タグに記述されたイベントハンドラから呼び出される関数とイベントの関係
参考:
Hawk’s W3 Laboratory : DHTML Tips : イベントハンドラに関する考察
http://www.hawk.34sp.com/stdpls/dhtml/event-handler.html


■onloadメソッドの上書き
ロード時に自動実行される処理を書きたい時、

function winit() {
  処理
}

window.onload = winit ;

とすれば良いが、無名関数を使うともっとスマートに

window.onload = function () {
  処理
}

のように書ける。






■JavaScript?エンジン
プログラム中でJavaScript?を解釈できるエンジン。
⇒JavascriptEngine


■document.open()
documentオブジェクトのwrite,writelnで使う
出力ストリームをオープンする。

参考:
http://www.red.oit-net.jp/tatsuya/java/reference/document.htm


[PR]eOH:S19@ttW