行列数0の状態でmoveToNextCellThenControlアクションを使用するとフリーズする

文書番号 : 39469     文書種別 : 不具合     登録日 : 2016/07/27     最終更新日 : 2016/07/27
文書を印刷する
対象製品
SpreadJS 9J
状況
修正済み
詳細
キーマップにmoveToNextCellThenControlアクションを割り当て、アクションを割り当てたキーでSpreadJSにフォーカスするとページがフリーズする現象が発生します。

【再現コード】
--------------------------------------------------
$("#ss").wijspread();
var spread = $("#ss").wijspread("spread");
var sheet = spread.getSheet(0);

sheet.setRowCount(0);
sheet.setColumnCount(10);

// Tab key
sheet.addKeyMap($.wijmo.wijspread.Key.tab, false, false, false, false, $.wijmo.wijspread.SpreadActions.moveToNextCellThenControl);

// Shift key and Tab key
sheet.addKeyMap($.wijmo.wijspread.Key.tab, false, true, false, false, $.wijmo.wijspread.SpreadActions.moveToPreviousCellThenControl);
--------------------------------------------------
回避方法
SpreadJS 9J SP1(Ver.3.20152.21)で修正済み
SpreadJS 9J SP1(Ver.3.20152.21)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

現象再現コードに対し、キーマップの割り当て処理部分を以下のように変更することで現象回避が可能です。

【現象再現コード変更前(キーマップの割り当て処理部)】
--------------------------------------------------
// Tab key
sheet.addKeyMap($.wijmo.wijspread.Key.tab, false, false, false, false, $.wijmo.wijspread.SpreadActions.moveToNextCellThenControl);
// Shift key and Tab key
sheet.addKeyMap($.wijmo.wijspread.Key.tab, false, true, false, false, $.wijmo.wijspread.SpreadActions.moveToPreviousCellThenControl);
--------------------------------------------------

【現象再現コード変更後(キーマップの割り当て処理部)】
--------------------------------------------------
// Tab key
sheet.addKeyMap($.wijmo.wijspread.Key.tab, false, false, false, false, function () {
  var sheet = this;
  if (sheet.getRowCount() !== 0 && sheet.getColumnCount() !== 0) {
    return $.wijmo.wijspread.SpreadActions.moveToNextCellThenControl.apply(this, arguments);
  }
});
// Shift key and Tab key
sheet.addKeyMap($.wijmo.wijspread.Key.tab, false, true, false, false, function () {
  var sheet = this;
  if (sheet.getRowCount() !== 0 && sheet.getColumnCount() !== 0) {
    return $.wijmo.wijspread.SpreadActions.moveToPreviousCellThenControl.apply(this, arguments);
  }
});
--------------------------------------------------