5

WebデザインでPsychの実験を行っていますが、両方のマウスクリックを無効にしたいです。(ユーザビリティの問題は無視してください。私はそれらについて知っています。私は精神実験の目的で意図的にこれを行っています。)

これまでのところ、Firefox、Chrome、Safariで両方のクリックを無効にすることに成功しました。ただし、IEでは、左クリックすると、クリックした場所にフォーカスが変わります。この動作を停止したい(つまり、クリックする前にフォーカスが残っている)。とにかくアラートを使用するので、システムがアラートを生成するかどうかは関係ありません。

何人かが私を助けてくれれば幸いです。JQueryは使用できませんのでご注意ください。私の実験ツールはJQueryをうまく処理できません。

<html>
    <head>
    </head>
    <body>
        <div>
            <select>
                <option> aa </option>
            </select>
        </div>
        <div>
            <select>
                <option> aa </option>
            </select>
        </div>

        <script type="text/javascript">

             function mousehandler(){
                alert("For the purpose of psych experiment, you can't use mouse.");
                return false;   
             }
             document.oncontextmenu = mousehandler;
             document.onmousedown = mousehandler;
        </script>
    </body>
</html>
4

1 に答える 1

1

IE8がこれを行っている理由はわかりませんが、ページの読み込み時に2番目の選択をフォーカスするように設定している場合、mousehandler()関数setTimeout(function(){document.getElementsByTagName("select")[1].focus();},1);で return false の前に追加すると、2番目の選択にフォーカスを戻すことができます。その後、最初の選択にフォーカスを失ったことはないようです。

その理由setTimeout()は、それがないと最初の選択がフォーカスされるためです。

function mousehandler(){
    alert("For the purpose of psych experiment, you can't use mouse.");
    setTimeout(function(){document.getElementsByTagName("select")[1].focus();},1);
    return false;   
}

編集: jsFiddle の例

于 2011-02-21T12:24:20.910 に答える