JavaScript

ガイド:高橋 登史朗

Ajaxなど、何かと最近騒がれているJavaScriptの最新情報とその活用方法を解説します。

掲示板 取材依頼 問合せ

クロスブラウザを制する

掲載日: 2001年 11月 21日

クロスブラウザを制する Part 2 2-17 押されたキーの文字get


★次のページに応用サンプルを用意しました。 
| →次のページ| シリーズ目次 |




*




8
←4   6→
2


数字キーを押してみてください。



















getKEYSTR()
Win n4 n6 moz e4 e5 e6,
Mac n4 n6 moz e4.5 e5 ,
Linux n4 n6 moz
押したキ−の文字を取得するためのファンクションです
<script language="JavaScript">
<!--


//--分岐
  function movIMG(ky){
    if(ky=='8'){moveByLAYER('test0',0,-15)}//8キー押すと
    if(ky=='6'){moveByLAYER('test0',15,0) }//6キー押すと
    if(ky=='4'){moveByLAYER('test0',-15,0)}//4キー押すと
    if(ky=='2'){moveByLAYER('test0',0,15) }//2キー押すと
  }


//--キー取得処理
/*/////////////// 押されたキ−の文字取得用関数   UseFree
========================================================
 Win  n4 n6 moz e4 e5 e6,
 Mac  n4 n6 moz e4.5 e5,
 Linux n4 n6 moz         
========================================================
 使用例  //押されたキ−の文字をダイアログに表示する
  alert( getKEYSTR(e) )
 Support http://game.gr.jp/js/
=======================================================*/

  //--ブラウザを調べてNNとIEの分岐を微調整します
  MSIE = navigator.userAgent.indexOf("MSIE")!=-1 

  //--押されたキ−の文字を返す
  function getKEYSTR(e){  
      if(document.all)     
        return String.fromCharCode(event.keyCode)
      else if(document.getElementById) 
        return String.fromCharCode((e.keyCode!=0)?e.keyCode:e.charCode)
      else if(document.layers)  
        return String.fromCharCode(e.which)
  }

  //--キーeventをセットする
  document.onkeypress = key_Press
  if(document.layers)
                   document.captureEvents(Event.KEYPRESS)
  self.focus()

  //--キー文字の取得
  function key_Press(e){ 
    //キープレス時に実行する処理をここへ書く
    movIMG(getKEYSTR(e))
  }

/*/////////////// 押されたキ−の文字取得用関数ここまで */

//--移動処理
/*///////////////////////// 相対位置移動用関数   UseFree
========================================================
 Win  n4 n6 moz e4 e5 e6,
 Mac  n4 n6 moz e4.5 e5,
 Linux n4 n6 moz         
========================================================
 レイヤーの現在位置を起点として指定したピクセル
 分だけ位置を移動させる

 書式
 moveByLAYER('レイヤ−名',x方向ピクセル,y方向ピクセル) 
 使用例  moveByLAYER('test0',0,-15)
 Support http://game.gr.jp/js/
=======================================================*/

  function moveByLAYER(idName,offsetx,offsety){

    if(document.getElementById){
      var oj = document.getElementById(idName).style
      oj.left = ( parseInt(oj.left) + offsetx ) + 'px'
      oj.top  = ( parseInt(oj.top)  + offsety ) + 'px'
    }
    else if(document.all){
      document.all(idName).style.pixelLeft += offsetx
      document.all(idName).style.pixelTop  += offsety
    }
    else if(document.layers)
      document.layers[idName].moveBy(offsetx,offsety)
  }

/*////////////////////////  相対位置移動用関数ここまで */

//-->
</script>

<!-- ↓このレイヤーが動きます -->
<div style="position:absolute;top:100px;left:120px" 
     id="test0">
  <img src="me0.gif">
</div>

<div style="position:absolute;
            left:100px;
            top:150px;
            font-family:Osaka,Arial;
            font-size:12pt " 
     id="test1">
<center>
↑<br>
8<br>←4   6→<br>
2<br>
↓<br><br>
数字キーを押してみてください。
</center>
</div>


* 緑文字が今回の関数
* 赤文字がこのスクリプトで最初に動作する部分
						
document.onkeypress = Function名によるonkeypress監視とセットで使い、押し下げたられたキーのコードを取得してString.fromCharCodeで文字に直しています。 キーコードのみを取得する場合はキーコードgetを参照。


★次のページに応用サンプルを用意しました。 
| →次のページ| シリーズ目次 |


関連用語: 17条地図 / 

ガイドメールマガジン
携帯電話のメールアドレスでは登録できません

掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます。