●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などを使用して行います。
<!-- Sample-No.2 --->
<font id="MyTag2" onClick="chgHTML()">Dynamic HTML</font>
<SCRIPT Language="JavaScript">
function chgHTML() {
MyTag2.innerHTML = "New Title";
}
</script>
上のスクリプトは、文字列をクリックすると、「Dynamic HTML」の文字を、
「New Title」に書き換えるプログラムです。[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
<div onClick="alert('普通このアラートは表示されません')">
<span onClick="cancel_event()">Click Me</span>
</div>
<SCRIPT Language="JavaScript">
//以後のイベントをキャンセルする
function cancel_event() {
alert("以後のイベントをキャンセルします");
event.cancelBubble = true;
//falseにすれば以降のイベントも普通に行われる。
}
</SCRIPT>
Current link
<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>