use*_*660 5 javascript internet-explorer focus mouseclick-event
我正在进行一些关于网页设计的心理学实验,我想禁用鼠标点击.(请忽略可用性问题.我了解它们.我故意这样做是为了我的心理实验.)
到目前为止,我成功禁用了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>
Run Code Online (Sandbox Code Playgroud)
不知道为什么 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;
}
Run Code Online (Sandbox Code Playgroud)
编辑:jsFiddle 示例