SpreadJSを使用すると標準のCtrl+Shift+V押下イベントが発生しない
対象製品
SpreadJS 9J
発生環境
9.20161.0
Internet Explorer
Internet Explorer
状況
修正済み
詳細
SpreadJSを参照すると標準のCtrl+Shift+V押下イベントが発生しなくなります。
【再現方法】
1.下記の再現コードを実行します
【動作結果】
Ctrl+Shift+Vを押下してもイベントが発生しません。
【再現コード】
<!DOCTYPE html>
<html>
<head>
<title>SpreadJS Sample</title>
<meta charset="utf-8" />
<script>
</script>
<!-- SpreadJS CSS、Libraries -->
<link type="text/css" href="http://cdn.grapecity.com/spreadjs/9201610/css/gc.spread.sheets.excel2013white.9.20161.0.css" rel="stylesheet"/>
<script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/9201610/scripts/gc.spread.sheets.all.9.20161.0.min.js"></script>
<!-- SpreadJS JP locale, resource -->
<meta name="spreadjs culture" content="ja-jp" />
<script src='http://cdn.grapecity.com/spreadjs/9201610/scripts/resources/ja/gc.spread.sheets.resources.ja.9.20161.0.min.js' type='text/javascript'></script>
<!-- Logic codes -->
<script>
window.onload = function(){
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
};
window.addEventListener("keydown", function (e) {
if (e.keyCode == 86 && e.ctrlKey == true && e.shiftKey == true) {
try {
console.log("ctrl+shift+v が押下されました");
} catch (ex) {
console.log(ex);
}
}
}, true);
</script>
</head>
<body style="font:9pt normal MS Gothic">
<!-- SpreadJS マークアップ -->
<div id="ss" class="spreadjs"></div>
</body>
</html>
【再現方法】
1.下記の再現コードを実行します
【動作結果】
Ctrl+Shift+Vを押下してもイベントが発生しません。
【再現コード】
<!DOCTYPE html>
<html>
<head>
<title>SpreadJS Sample</title>
<meta charset="utf-8" />
<script>
</script>
<!-- SpreadJS CSS、Libraries -->
<link type="text/css" href="http://cdn.grapecity.com/spreadjs/9201610/css/gc.spread.sheets.excel2013white.9.20161.0.css" rel="stylesheet"/>
<script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/9201610/scripts/gc.spread.sheets.all.9.20161.0.min.js"></script>
<!-- SpreadJS JP locale, resource -->
<meta name="spreadjs culture" content="ja-jp" />
<script src='http://cdn.grapecity.com/spreadjs/9201610/scripts/resources/ja/gc.spread.sheets.resources.ja.9.20161.0.min.js' type='text/javascript'></script>
<!-- Logic codes -->
<script>
window.onload = function(){
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
};
window.addEventListener("keydown", function (e) {
if (e.keyCode == 86 && e.ctrlKey == true && e.shiftKey == true) {
try {
console.log("ctrl+shift+v が押下されました");
} catch (ex) {
console.log(ex);
}
}
}, true);
</script>
</head>
<body style="font:9pt normal MS Gothic">
<!-- SpreadJS マークアップ -->
<div id="ss" class="spreadjs"></div>
</body>
</html>
回避方法
SpreadJS 9J SP2(Ver.9.20171.0)で修正済み
SpreadJS 9J SP2(Ver.9.20171.0)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
SpreadJSライブラリの参照より先にイベント処理を定義することで、現象の回避が可能です。
【再現コードへの回避方法適用例】
<!DOCTYPE html>
<html>
<head>
<title>SpreadJS Sample</title>
<meta charset="utf-8" />
<script>
// キーイベント処理をSpreadJSライブラリの参照より先に定義します
window.addEventListener("keydown", function (e) {
if (e.keyCode == 86 && e.ctrlKey == true && e.shiftKey == true) {
try {
console.log("ctrl+shift+v が押下されました");
} catch (ex) {
console.log(ex);
}
}
}, true);
</script>
<!-- SpreadJS CSS、Libraries -->
<link type="text/css" href="http://cdn.grapecity.com/spreadjs/9201610/css/gc.spread.sheets.excel2013white.9.20161.0.css" rel="stylesheet"/>
<script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/9201610/scripts/gc.spread.sheets.all.9.20161.0.min.js"></script>
<!-- SpreadJS JP locale, resource -->
<meta name="spreadjs culture" content="ja-jp" />
<script src='http://cdn.grapecity.com/spreadjs/9201610/scripts/resources/ja/gc.spread.sheets.resources.ja.9.20161.0.min.js' type='text/javascript'></script>
<!-- Logic codes -->
<script>
window.onload = function(){
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
};
</script>
</head>
<body style="font:9pt normal MS Gothic">
<!-- SpreadJS マークアップ -->
<div id="ss" class="spreadjs"></div>
</body>
</html>
SpreadJS 9J SP2(Ver.9.20171.0)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
SpreadJSライブラリの参照より先にイベント処理を定義することで、現象の回避が可能です。
【再現コードへの回避方法適用例】
<!DOCTYPE html>
<html>
<head>
<title>SpreadJS Sample</title>
<meta charset="utf-8" />
<script>
// キーイベント処理をSpreadJSライブラリの参照より先に定義します
window.addEventListener("keydown", function (e) {
if (e.keyCode == 86 && e.ctrlKey == true && e.shiftKey == true) {
try {
console.log("ctrl+shift+v が押下されました");
} catch (ex) {
console.log(ex);
}
}
}, true);
</script>
<!-- SpreadJS CSS、Libraries -->
<link type="text/css" href="http://cdn.grapecity.com/spreadjs/9201610/css/gc.spread.sheets.excel2013white.9.20161.0.css" rel="stylesheet"/>
<script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/9201610/scripts/gc.spread.sheets.all.9.20161.0.min.js"></script>
<!-- SpreadJS JP locale, resource -->
<meta name="spreadjs culture" content="ja-jp" />
<script src='http://cdn.grapecity.com/spreadjs/9201610/scripts/resources/ja/gc.spread.sheets.resources.ja.9.20161.0.min.js' type='text/javascript'></script>
<!-- Logic codes -->
<script>
window.onload = function(){
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
};
</script>
</head>
<body style="font:9pt normal MS Gothic">
<!-- SpreadJS マークアップ -->
<div id="ss" class="spreadjs"></div>
</body>
</html>