次のコード サンプルは、ボタンがクリックされたときに半透明の 100% オーバーレイを追加します。オーバーレイは、マウス ボタンを離すまで残ります。これが起こるはずのことです:
ボタンをクリックし、マウスを押したままにします。
マウスがダウンしている間に、Shift キーを押して放します。
押すと、div 領域に「水平」というテキストが表示され、カーソルが e-resize に変わります。シフトを離すと、div は「垂直」を示し、カーソルは n-resize に変わります。
IE9/10 では、テキストは変更されますが、カーソルは同じままです。キーバインドをボディレベルとオーバーレイレベルに変更しようとしましたが、役に立ちませんでした。
コードは次のとおりです(jsfiddleとjsbinに入れてみましたが、何らかの理由でキーの押下を完全に無視します)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
.overlay {
background-color: rgba(0, 0, 0, 0.3);
top: 0; bottom: 0; left: 0; right: 0; position: fixed;
z-index: 999;
}
.vertical { cursor: n-resize !important; }
.horizontal { cursor: e-resize !important; }
</style>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#button1").mousedown(onButtonMouseDown);
function onButtonMouseDown(e) {
var overlay;
overlay = $("body").after("<div class=\"overlay\"></div>").next();
overlay.addClass((e.shiftKey) ? "horizontal" : "vertical");
$(document).bind("keydown.ntextbox", function (e) {
if (e.which === 16) {
overlay.removeClass("vertical").addClass("horizontal");
$("#div1").html("horizontal");
}
});
$(document).bind("keyup.ntextbox", function (e) {
if (e.which === 16) {
overlay.removeClass("horizontal").addClass("vertical");
$("#div1").html("vertical");
}
});
overlay.mouseup(function (e) {
overlay.remove();
$(document).unbind(".ntextbox");
return false;
});
return false;
}
});
</script>
</head>
<body>
<div id="div1">...</div>
<button id="button1">Click me</button>
</body>
</html>