В своем веб-приложении я использую Ctrl + Клавиши со стрелками для перемещения от ячейки к ячейке в таблице.
Все ячейки содержат видимый <span>
и скрытый элемент <input>
- их значения синхронизируются.
Когда ячейка активирована, <span>
скрыт, пока отображается вход.
Все отлично работает в Firefox, IE, Opera и т. Д. Тем не менее, когда я загружаю Chrome, используйте Ctrl + Влево или Ctrl + Right вылетает страница (я вижу страницу "Aw Snap"). Странно то, что Ctrl + Вверх и Ctrl + Вниз Работа.
Я определил, что следующий код (прямо или косвенно ответственен за сбои):
/**
* Deactivates a cell, hiding its input field, and showing its span field
*/
View.prototype.deactivateCell = function (cell){
//Show the span, hide the input
var label = cell.descendants()[0];
var input = cell.descendants()[1];
if(label){
label.show();
}
if(input){
//THIS NEXT LINE IN PARTICULAR CAUSES THE CRASH
//I've also tried input.style.display = "none"; - same result
input.hide();
}
}
Странно, этот код называется Ctrl + Вверх / Вниз , а также Ctrl + Слева / Справа - но он падает только на Слева / Справа - даже при одинаковых значениях cell
!
У всех этих ячеек есть два, и только два, потомка ... И авария не имеет ничего общего с ячейками-источниками или ячейками назначения - можно перейти в любую ячейку сверху, но не из влево.
Что еще страннее; добавление alert(1);
в конце метода deactivateCell(cell)
предотвращает сбой. Помещение в начало метода не имеет никакого эффекта (кроме отображения диалогового окна с предупреждением до сбоя)
Я попытался выделить соответствующий HTML + этот метод в тестовом файле - я не смог воспроизвести сбой.
Кто-нибудь сталкивался с этим? Должен ли я списать это как ошибку браузера? Кто-нибудь знает, как я мог бы отладить это или попытаться это исправить? У меня нет ни малейшего впечатления о том, как мой Javascript может привести к зависанию браузера, когда так много других веб-сайтов в порядке.