5

我正在对网页设计进行一些心理实验,我想禁用鼠标点击。(请忽略可用性问题。我知道它们。我故意这样做是为了我的心理实验。)

到目前为止,我成功地禁用了 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 会这样做,但是如果您将第二个选择设置为在页面加载时获得焦点,那么在您的mousehandler()函数中,如果您setTimeout(function(){document.getElementsByTagName("select")[1].focus();},1);在 return false 之前添加,您可以将第二个选择重新设置为焦点。然后看起来它从未失去对第一个选择的关注。

原因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 回答