●Netscape Communicator4.0のDynamic HTML
基本構図は、JavaScript1.2 + LAYER (+JASS)です。
NN4.0のDynamic HTMLは、<LAYER>タグを用いることにより、 自由なポジショニングや、JavaScript1.2を併用して画面全体を使った、アニメーションなどが可能です。
また、JavaScript Style Sheet(JASS)をサポートし、JavaScriptによるStyleSheetの記述が出来ます。 これにより、例えばJavaScript1.2を用い画面の解像度を取得して、それにあわせてフォントサイズを変更するなどの事が出来ます。
また、Dynamic Font技術により、サーバーからフォントデータを取得できます。
●Internet Explorer4.0のDynamic HTML
基本構図は、Style Sheet + SCRIPT (+ActiveX)です。
IE4.0のDynamic HTMLは、ページ内のほぼ全ての要素にアクセスが出来るのが特徴です。 例えば、指定のタグのオプションをゲットしたり、タグ内のHTMLを取得出来たりします(詳しくはサンプルを参照して下さい)。 また、ActiveXのマルチメディアコントロールを使用することにより、 動的で、インタラクティブなコンテンツを簡単に作成できます。
Mouse Event | NN4 | IE4 | |
onClick | 指定のHTML要素上でクリックした時に発生。 | OK | OK |
onDblClick | 指定のHTML要素上でダブルクリックした時に発生。 | OK | OK |
onMouseover | 指定のHTML要素上にマウスポインタが入ると発生。 | OK | OK |
onMouseout | 指定のHTML要素上からマウスポインタがはずれると発生。 | OK | OK |
onMousedown | 指定のHTML要素上でマウスをクリックした瞬間に発生。 | OK | OK |
onMouseup | 指定のHTML要素上でマウスクリックして、離した瞬間に発生。 | OK | OK |
onMousemove | 指定のHTML要素上でマウスマウスが動くと発生。 | OK | OK |
Keyboard Event | |||
onkeydown | キーボードのキーを押した瞬間に発生。 | OK | OK |
onkeyup | キーボードのキーを押して、離した瞬間に発生。 | OK | OK |
onkeypress | キーボードのキーを押しっぱなしにしてる限り発生。 | OK | OK |
Event object -get position- | |||
x | コンテンツ表示領域のマウス座標xを返す。レイヤーの中の場合だと親レイヤー内の座標を返す。 | OK | OK |
y | コンテンツ表示領域のマウス座標yを返す。レイヤーの中の場合だと親レイヤー内の座標を返す。 | OK | OK |
screenX | ディスプレイ上のマウスx座標。 | OK | OK |
screenY | ディスプレイ上のマウスy座標。 | OK | OK |
pageX | コンテンツ表示領域においてのx座標。レイヤーの中でも変わらない。 | OK | NO |
pageY | コンテンツ表示領域においてのy座標。レイヤーの中でも変わらない。 | OK | NO |
layerX | LAYER上のマウスx座標 | OK | NO |
layerY | LAYER上のマウスy座標 | OK | NO |
clientX | ブラウザウインドウの中のマウスx座標。 | NO | OK |
clientY | ブラウザウインドウの中のマウスy座標。 | NO | OK |
offsetX | HTML要素上のマウスx座標。 | NO | OK |
offsetY | HTML要素上のマウスy座標。 | NO | OK |
IE4.0、HTMLオブジェクトモデルにおいては、各HTML要素(タグなど)に対して、 アクセス及びコントロールが出来ます。下記の例を参照して下さい。
上記の例は実行すると、マウスがテキストの上を通過したとき、 テキストの色が赤色になるというものです。<!-- Sample-No.1 ---> <font id="MyTag" style="color:blue" onMouseover="chgColor()">Dynamic HTML</font> <SCRIPT Language="JavaScript"> function chgColor() { var el; el = document.all("MyTag"); el.style.color = "red"; } </script>
[Sample-No.1の実行例(下の文字に触れて下さい]
---Dynamic HTML
今までの、HTMLでは一部のタグのみ、一部のイベント(onMouseover,onMouseout,onClick...etc)が利用可能でした(ハイパーリンクタグに、onMouseover,onMouseoutなど)。
しかし、Dynamic HTMLオブジェクトモデルにおいては、サポートされている全てのタグに全てのイベント(Mouse event,Keybord Event,Focus...etc)が利用出来ます。
つまり、<FONT>にonMouseoverなどのイベントを記述できたり、
<SPAN>タグにonKeypressのイベントを記述出来るようになりました。
先程の、Sample-No.1を見てもらうと、<FONT>にonMouseoverの記述があることが分かると思います。
これは、<FONT></FONT>で囲まれたHTML要素にマウスが通過すると、
chgColor()が呼び出されます。
■ページの瞬間的更新
先までの例を見てもらえば、分かると思いますが、Dynamic HTMLでは
ページのリロード(更新)を行わなくても、HTML要素の更新が可能です。
瞬間的に、文字の大きさや色を変えたり、HTMLの内容自体を書き変えたりなどが可能です。
■ページの書き換え
すでに決定されてる、ページ上の情報を瞬間的に書き換えるには、
innerHTMLや、outerHTMLなどを使用して行います。
上のスクリプトは、文字列をクリックすると、「Dynamic HTML」の文字を、 「New Title」に書き換えるプログラムです。<!-- Sample-No.2 ---> <font id="MyTag2" onClick="chgHTML()">Dynamic HTML</font> <SCRIPT Language="JavaScript"> function chgHTML() { MyTag2.innerHTML = "New Title"; } </script>
[Sample-No.2の実行例(下の文字をクリックして下さい]
---Dynamic HTML
document.all.ID
document.all.ID.style
ID.innerHTML = your messageSample source
<div id="WORD1" onClick="chgHTML()">クリックすると、ここを書き換えます。</div> <SCRIPT Language="JavaScript"> function chgHTML() { WORD1.innerHTML = "<b>書き換え終了。</b>"; } </SCRIPT>
ID.outerHTML = your messageSample source
<div id="WORD1" onClick="chgHTML()">クリックすると、外側のタグごと書き換えます。</div> <SCRIPT Language="JavaScript"> function chgHTML() { WORD1.outerHTML = "<div name='CHANGE'>タグごと書き換えました。</DIV>"; } </SCRIPT>
ID.innerText = your messageSample source
<div id="WORD1" onClick="chgText()">クリックすると、ここを書き換えます。</div> <SCRIPT Language="JavaScript"> function chgText() { WORD1.innerText = "<b>タグを書くとこんな風に、そのまま表示されます</b>"; } </SCRIPT>
ID.outerText = your messageSample source
<div id="WORD1" onClick="chgText()">クリックすると、ここをタグごと書き換えます。</div> <SCRIPT Language="JavaScript"> function chgText() { WORD1.outerText = "<b>タグを書くとこんな風に、そのまま表示されます</b>"; } </SCRIPT>
ID.insertAdjacentText("position","insert string") postion::Sample source
- "BeforeBegin":文字列の前に挿入します。新文字列-改行-文字列で挿入されます。
- "AfterBegin":文字列の前に挿入します。新文字列-文字列で挿入されます。
- "BeforeEnd":文字列の後ろに挿入します。文字列-新文字列-で挿入されます。
- "AfterEnd":文字列の後ろに挿入します。文字列-改行-新文字列-で挿入されます。
<div id="WORD1" onClick="insertText()">クリックすると、新しい文を追加します。</div> <SCRIPT Language="JavaScript"> function insertText() { WORD1.insertAdjacentText("AfterEnd", "新しく文を追加しました。"); } </SCRIPT>
ID.insertAdjacentHTML("position","insert string") postion::Sample source
- "BeforeBegin":文字列の前に挿入します。新文字列-改行-文字列で挿入されます。
- "AfterBegin":文字列の前に挿入します。新文字列-文字列で挿入されます。
- "BeforeEnd":文字列の後ろに挿入します。文字列-新文字列-で挿入されます。
- "AfterEnd":文字列の後ろに挿入します。文字列-改行-新文字列-で挿入されます。
<div id="WORD1" onClick="insertHTML()">クリックすると、新しい文を追加します。</div> <SCRIPT Language="JavaScript"> function insertHTML() { WORD1.insertAdjacentHTML("Beforebegin", "新しく文を追加しました。"); } </SCRIPT>
Variable = ID.offsetWidthSample source
<span id="WORD1" onClick="tag_width()">クリックすると、このタグの横幅をステータスバーに表示します</span> <SCRIPT Language="JavaScript"> function tag_width() { wid = WORD1.offsetWidth; window.status = "横幅:" +wid; } </SCRIPT>
Variable = ID.offsetHeightSample source
<span id="WORD1" onClick="tag_height()">クリックすると、このタグの縦幅をステータスバーに表示します</span> <SCRIPT Language="JavaScript"> function tag_height() { hei = WORD1.offsetHeight; window.status = "縦幅:" +hei; } </SCRIPT>
Variable = ID.offsetTopSample source
<span id="WORD1" onClick="tag_left()">クリックすると現在の座標xをステータスバーに表示します</span> <SCRIPT Language="JavaScript"> function tag_left() { left = WORD1.offsetLeft; window.status = "座標x:" +left; } </SCRIPT>
Variable = ID.offsetTopSample source
<span id="WORD1" onClick="tag_top()">クリックすると現在の座標yをステータスバーに表示します</span> <SCRIPT Language="JavaScript"> function tag_top() { top = WORD1.offsetTop; window.status = "座標y:" +top; } </SCRIPT>
Variable = ID.style.posLeftSample source
<span id="WORD1" onClick="tag_posleft()" style="position:absolute"> クリックすると現在の座標xを250に移動します。</span> <SCRIPT Language="JavaScript"> function tag_posleft() { WORD1.style.posLeft = 250; } </SCRIPT>
Variable = ID.style.posTopSample source
<span id="WORD1" onClick="tag_postop()" style="position:absolute"> クリックすると現在の座標yを250に移動します。</span> <SCRIPT Language="JavaScript"> function tag_postop() { WORD1.style.posTop = 250; } </SCRIPT>
Variable = event.srcElement;Sample source
<img width=200 height=200 id="img1"> <br><br> <img width=200 height=200 id="img2"> <SCRIPT Language="JavaScript"> //現在マウスはどのタグの上にいるか? function src_element() { el = event.srcElement; window.status = el.tagName; } document.onmousemove = src_element; </SCRIPT>
Variable = event.fromElement;Sample source
<img width=200 height=200 id="img1"> <br><br> <img width=200 height=200 id="img2"> <SCRIPT Language="JavaScript"> //現在マウスはどのタグの上かから来たのか? function src_element() { el = event.fromElement; if(el != null) { window.status = el.tagName; } } document.onmouseover = src_element; </SCRIPT>
event.returnValue = false | trueSample source
<a href="http://www.yahoo.co.jp" onClick="returnVal()">Go yahoo!</a> <SCRIPT Language="JavaScript"> //リンクを無効にする function returnVal() { event.returnValue = false; } </SCRIPT>
event.cancelBubble = true | falseSample source
Current link<div onClick="alert('普通このアラートは表示されません')"> <span onClick="cancel_event()">Click Me</span> </div> <SCRIPT Language="JavaScript"> //以後のイベントをキャンセルする function cancel_event() { alert("以後のイベントをキャンセルします"); event.cancelBubble = true; //falseにすれば以降のイベントも普通に行われる。 } </SCRIPT>
<HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <a href="http://www02.so-net.or.jp/~kg-group/"> <!--this.style.color='red'"のトコは変化する色を指定して下さい。--> <span onMouseover="this.style.color='red'" onMouseout="this.style.color=''"> JavaC </span> </a> </BODY> </HTML>
<HTML> <HEAD> <TITLE></TITLE> <SCRIPT Language="JavaScript"> <!-- function treeMenu(id) { var disp = document.all(id).style.display; if(disp != "none" || disp == "") { document.all(id).style.display = "none"; } else { document.all(id).style.display = "block"; } } //--> </SCRIPT> </HEAD> <BODY> <dl> <dd><span style="cursor:hand" onClick="treeMenu('menu')" class="green">:Start Pages Link Menu</span> <ul style="display:none" id="menu"> <li><span style="cursor:hand" onClick="treeMenu('menu-search')" class="green">Search Engine</span> <ul id="menu-search" style="display:none"> <li><a href="http://www.yahoo.co.jp">Yahoo! japan</a> <li><a href="http://www.goo.ne.jp/">Goo</a> </ul> <li><span style="cursor:hand" onClick="treeMenu('menu-vender')" class="green">Vender</span> <ul id="menu-vender" style="display:none"> <li><a href="http://www.microsoft.com/japan/">Microsoft</a> <li><a href="http://www.apple.co.jp/">Apple</a> </ul> </ul> </dl> </BODY> </HTML>
<HTML> <HEAD> <TITLE></TITLE> <SCRIPT Language="JavaScript"> <!-- function show_hide(id) { disp = document.all(id).style.display; if(disp == "block") document.all(id).style.display = "none"; else document.all(id).style.display = "block"; } //--> </SCRIPT> </HEAD> <BODY> <img src="cursor_down.gif" width="34" height="28" align=top style="cursor:hand" onClick="show_hide('dh1')"><!--IDを記述--> <font size=5 style="font-size:20pt;font-family:Times New Roman">What's Dynamic HTML?</font> <blockquote id="dh1" style="display:none"> この間のメッセージの切り替えを行います。 </blockquote> <br> <img src="cursor_down.gif" width="34" height="28" align=top style="cursor:hand" onClick="show_hide('dh2')"><!--IDを記述--> <font size=5 style="font-size:20pt;font-family:Times New Roman">Merit Demerit?</font> <blockquote id="dh2" style="display:none"> この間のメッセージの切り替えを行います。 </blockquote> </BODY> </HTML>
<HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> Message:<span id="link_msg_show"></span> <a href="http://www02.so-net.or.jp/~kg-group/"> <span onMouseover="link_msg_show.innerHTML='Internet Start Pages に行きます'" onMouseout="link_msg_show.innerHTML=''"> JavaC </span> </a> </BODY> </HTML>
<HTML> <HEAD> <TITLE></TITLE> <SCRIPT Language="JavaScript"> <!-- if(navigator.appVersion.charAt(0)>=4 && (navigator.appVersion).indexOf("MSIE")!=-1) isIE4 = true; else isIE4 = false; //イベントオブジェクト・ダミー関数&エラー回避 function dummy_event() { this.x = 0; this.y = 0; } if(navigator.appVersion.charAt(0) <=3) { event = new dummy_event(); } //******************************************** //*****マウスオーバー処理&マウスアウト処理*** //******************************************** function showDynamicMessage_over(x,y,num) { if(isIE4) { document.all.MSG.innerHTML = showDynamicMessage.msg[num]; document.all.MSG.style.left = x+showDynamicMessage.msg_x1;; document.all.MSG.style.top = y+showDynamicMessage.msg_y1;; document.all.HOST.style.left= x+showDynamicMessage.host_x1; document.all.HOST.style.top = y+showDynamicMessage.host_y1; document.all.MSG.style.display = "block"; document.all.HOST.style.display = "block"; } } function showDynamicMessage_out() { if(isIE4) { document.all.MSG.style.display = "none"; document.all.HOST.style.display = "none"; } } //******************************************** //*****ユーザー設定*************************** //******************************************** function set_showDynamicMessage() { this.host_x1 = 50; //イベント発生場所からのホストの座標x。 this.host_y1 = -70; //イベント発生場所からのホストの座標y。 this.msg_x1 = 80; //イベント発生場所からのメッセージの座標x。 this.msg_y1 = -10; //イベント発生場所からのメッセージの座標y。 this.msg = new Array(); this.msg[0] = "<b><font color=green>Internet Start Pagesです。<br>最近Maru's Chatで落ちやすいと評判です。</font></b>"; this.msg[1] = "<b><font color=green>ネットスケープのページです。<br>Netscape Communicatorのダウンロードなどが出来ます。</font></b>"; this.msg[2] = "<b><font color=green>マイクロソフトのページです。<br>Internet Explorer4.0のダウンロードなどが出来ます。</font></b>"; this.msg[3] = "<b><font color=green>Yahoo!japanのページです。<br>検索ならやっぱここでしょう。</font></b>"; //表示するメッセージの設定。 //以下、this.msg[5]=""; this.msg[6]="";......と続けていけます。 } if(isIE4) { showDynamicMessage = new set_showDynamicMessage(); //↓ホスト画像のタグ。お好きな画像に書き換えて下さい。*但し"ID"は変更しないこと。 document.write('<img src="girl.gif" alt="JavaC HOST" id="HOST" style="position:absolute;display:none;top:0;left:0">'); document.write('<span id="MSG" style="position:absolute;display:none;background:#c7ffdb;width:250;top:0;left:0;font-size:10pt"></span>'); } //--> </SCRIPT> </HEAD> <BODY> <a href="http://www02.so-net.or.jp/~kg-group/" onMouseOver="showDynamicMessage_over(event.x,event.y,0)" onMouseout="showDynamicMessage_out()"> Internet Start Pages </a><br> <!-- onMouseOver="showDynamicMessage_over(event.x,event.y,0)" の"0"のとこは、スクリプトタグの中で設定した、this.msg[0]を呼び出すという意味です。 --> <a href="http://home.netscape.com/" onMouseOver="showDynamicMessage_over(event.x,event.y,1)" onMouseout="showDynamicMessage_out()"> Netscape </a><br> <a href="http://www.microsoft.com/japan/" onMouseOver="showDynamicMessage_over(event.x,event.y,2)" onMouseout="showDynamicMessage_out()"> Microsoft </a><br> <a href="http://www.yahoo.co.jp/" onMouseOver="showDynamicMessage_over(event.x,event.y,3)" onMouseout="showDynamicMessage_out()"> Yahoo!japan </a><br> <a href="http://www.goo.ne.jp/" onMouseOver="showDynamicMessage_over(event.x,event.y,4)" onMouseout="showDynamicMessage_out()"> Goo </a><br> </center> </BODY> </HTML>