Мне удалось воспроизвести это поведение, используя две версии IE:
- IE 8 (версия 8.0.7601.1754).
- IE 9 (версия 9.0.8112.16421, обновление версии 9.0.4)
Если щелкнуть строку заголовка окна, можно установить флажок в дополнение к возможности щелкнуть в любом месте страницы. Я обнаружил, что окно открывается, как только вы снова нажимаете пробел.
Это похоже на ошибку в том, как IE обрабатывает фокус. Поскольку окно открывается, как только снова нажимается пробел, я подумал, что, возможно, можно было бы написать JavaScript для имитации нажатия клавиши пробела. Вот сценарий, который я разработал на основе вашего тестового примера:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="robots" content="none">
<meta name="viewport" content="width=960">
<title>checkbox test</title>
</head>
<body>
<h1>Checkbox test</h1>
<input name="item1" id="item1" value="1" checked="checked" type="checkbox" />
<label for="item1">item1</label><br />
<input name="item2" id="item2" value="2" checked="checked" type="checkbox" />
<label for="item2">item2</label><br />
<input name="item3" id="item3" value="3" type="checkbox" />
<label for="item3">item3</label>
<script>
<!--
var spaceDown = false;
var tabDown = false;
window.onload = function(){
document.onkeydown = function(){
if(event.keyCode == 32){ spaceDown = true; }
if(event.keyCode == 9){ tabDown = true; }
}
document.onkeyup = function(){
if(spaceDown && tabDown){
console.log("Danger, Will Fobinson!");
console.log("Simulating space bar press ...");
var e = document.createEventObject();
e.altKey = false;
e.ctrlKey = false;
e.shiftKey = false;
e.keyCode = 32;
document.fireEvent("onkeydown", e);
document.fireEvent("onkeyup", e);
}
if(event.keyCode == 32){ spaceDown = false; }
if(event.keyCode == 9){ tabDown = false; }
}
}
// -->
</script>
</body>
</html>
К сожалению, когда вы запускаете опасное состояние в IE 8 (сфокусируйте флажок, пробел вниз, нажмите на вкладку вниз), это увеличивает загрузку ЦП в IE и выдает маленькое диалоговое окно с надписью:
Так что это не очень полезно.
И, как вы обнаружили, методы focus () и blur (), похоже, тоже не помогают в этом случае.
Так что, в принципе, я думаю, что ваш единственный вариант - сообщить об этом как об ошибке команде IE, и надеюсь, что они исправят это. Я не уверен, как ты это делаешь на самом деле. Теоретически вы можете отправить отзыв IE в http://connect.microsoft.com/IE - но вам нужно будет войти с Windows Live ID, и я не уверен, как вы получите один из них.
Кроме этого ... давайте просто надеяться, что не слишком много людей вызовут ошибку!