クライアントスクリプトによるマウスホイール操作抑制が無効になる
対象製品
SPREAD for ASP.NET 8.0J
状況
修正済み
詳細
preventDefaultを使用してマウスホイール操作を抑制しても、SPREAD上では同動作による拡大・縮小が可能になる現象が発生します。
【再現手順】
1.新規WebフォームにSPREADを配置する
2.Webフォームに下記の再現コードを貼り付け、プロジェクトを起動する
3.Ctrl + ホイールスクロール操作で起動したページの拡大を行う
--- 拡大操作を禁止しているにも関わらず、SPREAD上にマウスカーソルがある場合のみ拡大・縮小が行われる
【再現コード】
------------------------------------
クライアント側スクリプト
------------------------------------
<script type="text/javascript">
function isCancelWheelMouse() {
var event = window.event;
if (event.shiftKey || event.ctrlKey) {
if (event.preventDefault) {
event.preventDefault();
}
}
}
window.onload = function () {
window.addEventListener('mousewheel', isCancelWheelMouse, false);
document.addEventListener('mousewheel', isCancelWheelMouse, false);
}
</script>
【再現手順】
1.新規WebフォームにSPREADを配置する
2.Webフォームに下記の再現コードを貼り付け、プロジェクトを起動する
3.Ctrl + ホイールスクロール操作で起動したページの拡大を行う
--- 拡大操作を禁止しているにも関わらず、SPREAD上にマウスカーソルがある場合のみ拡大・縮小が行われる
【再現コード】
------------------------------------
クライアント側スクリプト
------------------------------------
<script type="text/javascript">
function isCancelWheelMouse() {
var event = window.event;
if (event.shiftKey || event.ctrlKey) {
if (event.preventDefault) {
event.preventDefault();
}
}
}
window.onload = function () {
window.addEventListener('mousewheel', isCancelWheelMouse, false);
document.addEventListener('mousewheel', isCancelWheelMouse, false);
}
</script>
回避方法
Service Pack 3(v8.0.4004.2010)で修正済み。
Service Pack 3(v8.0.4004.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
addEventListernerのuseCaptureをTrueに設定し、イベント伝搬の順序を変更することで、本現象の回避が可能です。
------------------------------------
クライアント側スクリプト
------------------------------------
window.onload = function () {
window.addEventListener('mousewheel', isCancelWheelMouse, true);
document.addEventListener('mousewheel', isCancelWheelMouse, true);
}
Service Pack 3(v8.0.4004.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
addEventListernerのuseCaptureをTrueに設定し、イベント伝搬の順序を変更することで、本現象の回避が可能です。
------------------------------------
クライアント側スクリプト
------------------------------------
window.onload = function () {
window.addEventListener('mousewheel', isCancelWheelMouse, true);
document.addEventListener('mousewheel', isCancelWheelMouse, true);
}