忍者ブログ

からすまる日誌 JavaScript

基本(18) スクリーンキーボードをつくる(1)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

基本(18) スクリーンキーボードをつくる(1)

キーロガー:
どのキーをタッチしたかを取得してそれをロギングするマルウェア。
自分のパスワードが丸見えになる。
 
それを防止するために画面にプログラム的にキーボードを表示させて、それをクリックして入力させる:
スクリーンキーボードという
 
そのスクリーンキーボードを作りましょう
 

test2.html, test2.css, test2.jsを制作
  
とりあえずABCDのキーを作りますよ。
 
body内
 
<p>
<input type="button" value="A">
<input type="button" value="B">
<input type="button" value="C">
<input type="button" value="D">
</p>
  

クリックされた時にTypeという処理がされるようにする。
こういうのをイベントトリガーという。
  
<input type="button" value="A" onClick="Type()">
typeは予約語なのでTypeと大文字にする。 
 
 
--->js側
Aを押したらコンソールにAとでるようにする。
 
function Type(){
console.log('A');
}

関数を実行するときに素材を「引数」(パラメータ)という。
それを加工して「戻り値」をもらったりする。

htmlではダブルクォート
javaScriptではシングルを使う。
 
ただし、この関数の引数はシングルコートになっている。
これはダブルクォートの中にダブルは書けないから。
 

引数を利用して、A-Dまで押したらコンソールにその文字がでるようにしましょう 
 
<input type="button" value="A" onClick="Type('A')">
に変更。B以降も変更。
 
js側は
function Type(letter){
console.log(letter);
}
に変更
 

次、body直下に
<p id="disp"></p>
を追加。
 
そして、コンソールじゃなくてここに書いてください。打った文字を。できる?
 
--->ここまで
 
function Type(letter){
var disp = document.getElementById('disp');
disp.innerHTML = letter;
}

これだと1文字しか表示されないから、打った文字全部でるようにしましょう
 
(ちなみに自分でやった分)
 
var msg='';
function Type(letter){
var disp = document.getElementById('disp');
msg = msg+letter;
disp.innerHTML =msg;
}
 
(よろしい回答はこちら)
 
function Type(letter){
var disp = document.getElementById('disp');
disp.innerHTML += letter;
}
 
disp.innerHTML += letter; で、
今書かれている文字(disp.innerHTML)を呼び出して、
それに新しい一文字(letter)を足していっている感じ。
  
disp.innerHTML = disp.innerHTML + letter;と
同じソースになる。
 
letterは毎回初期化されて一文字だけ受け渡しが行われている。
こういうのはちなみに仮引数という。

innerHTMLというのは、その中身という意味。
 
 
 
--->とりあえずここまで。(自分アレンジ含む)
 
test2.html
  
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="test2.css">
<title>タイプライター</title>
</head>
<body>
<p id="disp"></p>
<p>
<input type="button" value="A" onClick="Type('A')">
<input type="button" value="B" onClick="Type('B')">
<input type="button" value="C" onClick="Type('C')">
<input type="button" value="D" onClick="Type('D')">
</p>
<script src="test2.js"></script>
</body>
</html>
  
--->test2.css
 
body{
background:#ff8;
}
#disp{
font-size:2rem;
}
input{
font-size:2rem;
padding:10px;
display:inline-block;
border-radius:5px;
text-decoration:none;
line-height:1;
}
  
--->test2.js
 
function Type(letter){
//letterは仮引数。何が送られてくるかわからないので
//仮に変数として処理しますよーという
var disp = document.getElementById('disp');
disp.innerHTML += letter;
}
  

resetボタンもつくろう。
 
→htmlのdのボタンの下に追加
  
<input type="button" value="RESET" onClick="resetDisp()">
  
→jsにも追加
  
function resetDisp(){
var disp = document.getElementById('disp');
disp.innerHTML = '';
}
 

*なおボタンがぴこぴこ上下に動くのを止めたかったら
1.ボタン群のpにidをつけて
2.cssでボタンが表示されるとこを固定するといいらしい。
 
--->html側
  
<p id="btn">
<input type="button" value="A" onClick="Type('A')">
  
--->css側
 
#btn{
 position:absolute;/*絶対配置*/
 top:300px;/*上から100px*/
}
 
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R