プロが教える店舗&オフィスのセキュリティ対策術

FireFoxのjavascriptで自動でキーを押させたい。その方法が分からない。

------------------------------------------------
onloadで下記のキーを(①~④)自動で2回打鍵したい。
1. シフトキーを押す
2. タブキーを押す
3. タブキーを離す
4. シフトキーを離す

------------------------------------------------
onload以降で下記の操作を実行したい。

左キーで下記のキーを自動で打鍵したい。
1. タブキーを打鍵する

右キーで下記のキーを打鍵する。
1. シフトキーを押す
2. タブキーを押す
3. タブキーを離す
4. シフトキーを離す

htmlのコードを知りたい。宜しく、お願いします。

質問者からの補足コメント

  • どう思う?

    先ほどの<script>を考えたのですが。全体を下記に示します。
    タブを5回押した場合を想定しています。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//ja"
    "http://www.w3.org/TR/html4/loose.dtd">
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html"; charset="sjis">
    <TITLE>sample</TITLE>

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/09/29 01:06
  • どう思う?

    <SCRIPT TYPE="text/javascript">
    <!--
    function keyOperate(){
    fireEvent("keydown", 9, true);
    fireEvent("keyup", 9, true);
    fireEvent("keydown", 9, true);
    fireEvent("keyup", 9, true);
    fireEvent("keydown", 9, true);
    fireEvent("keyup", 9, true);
    fireEvent("keydown", 9, true);
    fireEvent("keyup", 9, true);
    fireEvent("keydown", 9, true);
    fireEvent("keyup", 9, true);
    }

      補足日時:2015/09/29 01:09
  • どう思う?

    function fireEvent(type, code, shift){
    var e = document.createEvent("Event");
    e.initEvent(type,true,true);
    e.keyCode = code;
    e.shiftKey = shift;
    document.dispatchEvent(e);
    }

    // -->
    </SCRIPT>
    </HEAD>

      補足日時:2015/09/29 01:11
  • どう思う?

    <BODY onload="keyOperate()">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">

      補足日時:2015/09/29 01:13
  • どう思う?

    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    <INPUT TYPE="BUTTON" NAME="" VALUE="発生">
    </BODY>
    </HTML>

      補足日時:2015/09/29 01:15

A 回答 (3件)

ANo2です。




目的がわからなかったので、前回のような回答をしましたが、ANo2でもお断りしましたようにあくまでもスクリプトレベルでのイベントですので、実際のタブキー押し下げと全く同じというわけではありません。

追加でご質問の、
 『この場合は話を単純化して例えばタブキーを4回打鍵をした
  場合は当然に4個目のボタンにフォーカスが移ります。』
ということがなさりたいのであるなら・・・

window.onload = function(){
 document.getElementsByTagName("input")[3].focus();
}
みたいなことで、よいのではないでしょうか?
    • good
    • 0
この回答へのお礼

有難う御座いました。

お礼日時:2015/09/29 12:54

お望みの回答かどうかは不明ですが・・・



キーイベントを発生させることで、同様の状況を作り出すことは可能です。
ただし、スクリプトのレベルで「同様」という意味で、まったく同じではありませんので、ご質問の回答になっているのかどうかは不明です。

まず、チェック用に以下のスクリプトを用意しました。
document.addEventListener("keydown", keyHandler, false);
document.addEventListener("keyup", keyHandler, false);

function keyHandler(e){
 var str = e.type + " / code=" + e.keyCode + " , shift=" + e.shiftKey;
 var res = document.getElementById("status");
 res.innerHTML += str + "<br>";
}

手動で、ご質問文の1~4を操作すると以下の結果表示となります。
keydown / code=16 , shift=true
keydown / code=9 , shift=true
keyup / code=9 , shift=true
keyup / code=16 , shift=false


上記の確認スクリプトが動作している状況で、以下のスクリプトを走らせても同様の結果(イベントとして検出される)となります。
function keyOperate(){
 fireEvent("keydown", 16, true);
 fireEvent("keydown", 9, true);
 fireEvent("keyup", 9, true);
 fireEvent("keyup", 16, false);
}

function fireEvent(type, code, shift){
 var e = document.createEvent("Event");
 e.initEvent(type,true,true);
 e.keyCode = code;
 e.shiftKey = shift;
 document.dispatchEvent(e);
}


※ firefox 37にて確認しました。
この回答への補足あり
    • good
    • 1
この回答へのお礼

有難う御座います。具体的なイメージがつかめないのですが。
御回答されたjavascriptのコードを実際のhtmlに挿入をする場合
下記の<script>以降に付いてはどう言うコードになるのでしょうか。

この場合は話を単純化して例えばタブキーを4回打鍵をした場合は
当然に4個目のボタンにフォーカスが移ります。
それで確認を取りたいのですが。

宜しく、お願いします。

<HTML>
<HEAD>
<TITLE>sample</TITLE>
<script>
<!--この部分のjavascriptのコードが不明-->
}
</script>
</HEAD>
<BODY>
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
<input type="button" value="発生" >
</BODY>
</HTML>

お礼日時:2015/09/28 20:10

javasriptにはsendkeysがないのでキーを送ることはできません


もしブラウザをコントロールしようという意図でしたらあきらめた方がよいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!