Home > イヌでもわかるJavaScript講座 お品書き
イヌでもわかるJavaScript講座 お品書き へ戻ります
イヌでもわかるJavaScript講座


Step.94 - フローティングメニューを表示する


ダブルクリックで、リンク用のフローティングメニューをつくってみます。


Step テーマ
● とくになし

実行例


どこでもいいから、ダブルクリックしてみそ



リスト


<DIV id="popmenu" style="position:absolute; visibility:hidden; border-style:ridge;">
<DIV style="color:#FFFFFF; background-color:#8A2BE2; font-weight:bold;">イヌでもメニュー</DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="step1.htm">STEP.1</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="aisatu.htm">STEP.2</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="getdate.htm">STEP.3</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="function.htm">STEP.4</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="javascript:myHidden()">閉じる</a></DIV>
</DIV>
<SCRIPT type="text/javascript"><!--
document.ondblclick = myDblClick;
 
function myDblClick( evt ){
myEvent = ( evt ) ? evt : window.event;
myObj=document.getElementById ( "popmenu" ).style;
myObj.left = myEvent.clientX + document.body.scrollLeft ;
myObj.top = myEvent.clientY + document.body.scrollTop ;
myObj.visibility = "visible";
}
 
function myHidden(){
myObj.visibility = "hidden";
}
// --></SCRIPT>


サンプルだけの HTMLは こちらへ

説明


ダブルクリックした位置にリンク用のフローティングメニューを表示してみます。


フローティングメニュー(ポップメニュー) を作成します。
<DIV id="popmenu" style="position:absolute; visibility:hidden; border-style:ridge;">
<DIV style="color:#FFFFFF; background-color:#8A2BE2; font-weight:bold;">イヌでもメニュー</DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="step1.htm">STEP.1</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="aisatu.htm">STEP.2</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="getdate.htm">STEP.3</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="function.htm">STEP.4</a></DIV>
<DIV style="color:#000000; background-color:#FFFFCC;"><a href="javascript:myHidden()">閉じる</a></DIV>
</DIV>


ダブルクリックのイベントをいじります。
document.ondblclick = myDblClick;
function myDblClick( evt ){
myEvent = ( evt ) ? evt : window.event;
myObj=document.getElementById ( "popmenu" ).style;
myObj.left = myEvent.clientX + document.body.scrollLeft ;
myObj.top = myEvent.clientY + document.body.scrollTop ;
myObj.visibility = "visible";
}
ダブルクリックしたら、myDblClick() を呼ぶようにします。
やってることは、マウスカーソルの位置に、フローティングメニューを表示してるだけ。
中身は、Step.88 をごっそり持ってきたので、そちらを参照してください。


フローティングメニュー内の 閉じる を選択した場合は、単純に フローティングメニューを非表示にします。
function myHidden(){
myObj.visibility = "hidden";
}


フローティングメニューの リンクの上に マウスカーソルを合わせたら バックグラウンドカラーが反転するのは スタイルシート設定。
Step.41、Step.42 を参照。


参考ステップ
Step.74 画面右下にリンクバナーを固定表示してみましょう 
Step.88 リンク先の補足説明窓を表示してみましょう 
Step.92 マウスカーソルに何かくっつけましょう 

一般的なイベントハンドラ一覧


※ 古い情報
onmouseoverマウスカーソルが乗った
onmouseoutマウスカーソルが離れた
onmousemoveマウスカーソルが動いた
onmousedownマウスボタンを押した
onmouseupマウスボタンを離した
onclickマウスボタンをクリックした
ondblclickマウスボタンをダブルクリックした
onkeydownキーを押した
onkeyupキーを離した
onkeypressキーを打った
onchangeフォームの値が変わった(入力した)
onselectフォームの選択が変わった(選択した)
onsubmit送信ボタンを押した
onresetクリアボタンを押した
onfocusフォーカスを獲得した
onblurフォーカスを開放した


N6は、
window.addEventListener("dblclick" , myClickN6 , true);
イベントハンドラを追加するメソッド addEventListener() を使用します。

第一パラメータは、イベント種別を文字列で渡します。イベントハンドラ一覧の on を取り除いた文字です。
第二パラメータは、処理する関数オブジェクト。関数の括弧 () を取り除いてセットします。
第三パラメータは、true か false で、true は、キャプチャを行います。
例では、ダブルクリックイベント時に、Eventオブジェクトがパラメータとして渡された関数 myClickN6(myEvent) が呼ばれます。

N4は、
window.captureEvents(Event.DBLCLICK);
window.ondblclick = myClickN4;
の2行。
まず、window に対して、captureEvents() を実行します。
パラメータは、イベントマスクをセットします。Event. に続いて、イベントハンドラ一覧の on を取り除いた文字を 大文字 で書き込みます。
2つ以上セットしたければ、
window.captureEvents(Event.DBLCLICK | Event.CLICK);
のように記述します。
次にイベントハンドラを設定します。
例では、ダブルクリックイベント時に、Eventオブジェクト がパラメータとして渡された関数 myClickN4(myEvent) が呼ばれます。

IEは、
document.ondblclick = myClickIE;
IEは、Eventオブジェクトをイベントハンドラにパラメータとして渡さずに、window.event に格納されます。
例では、ダブルクリックイベント時に、関数 myClickIE() が呼ばれます。

※ OP6 は、ダブルクリックイベント( ondblclick )がサポートされていません。

Tips


●イベントのキャンセルについて

イベントには戻り値としてブール値を戻します。
イベントの戻り値として false を戻すとイベントのキャンセルとして処理されます。

例えば、
<script type="text/javascript"><!--
function myOK(){
return confirm ("本当に行ってしまうの?");
}
// --></SCRIPT>
<A href="menu.html" onclick="return myOK();">メニューへ</a>
は、「キャンセル」を選択すれば、"menu.html" へのリンク処理はされません。

<A href="menu.html" onclick="myOK();">メニューへ</a>
とすると、「OK」および「キャンセル」を選択しても、"menu.html" へ リンクされます。
しかし、これはイベントに true が戻されたわけではありません。

<A href="menu.html">メニューへ</a>
は、イベントに true が戻されます。


 
イヌでもわかるJavaScript講座 お品書き へ戻ります