В моем приложении есть текстовая область. Над ней расположена кнопка «Сохранить», которая реагирует на любое событие нажатия клавиши в текстовой области, изменяя его цвет фона, чтобы предупредить пользователя «сохранить» отредактированный текст в базе данных, нажав эту кнопку.
$(".panelText").on("keydown","textarea",function() {
console.log("Keydown in textarea!");
var textID=$(this).closest('.text').attr('id');
$('#'+textID).find('.saveText').addClass('textChanged');
});
Похоже, что Mac / Safari не генерирует событие «нажатие клавиши» или «нажатие клавиши», когда нажата любая из двух вариаций клавиши «удалить» Mac. Когда я запускаю Chrome на Mac, он отлично работает как для «нажатия клавиш», так и для «нажатия клавиш» так же, как и в любом браузере, который я тестирую в системах Win10. В Mac / Safari и других протестированных браузерах все другие клавиши, которые могли изменить текст, запускаются либо для «нажатия клавиш», либо для «нажатия клавиш».
Я обнаружил это после покупки отремонтированной системы Mac OSX для тестирования моего приложения на устройствах Apple, особенно. с Safari, так как я считаю, что многие пользователи используют этот браузер. Я довольно незнаком с миром Mac. Но если я прав, что событие не запускается для этих двух ключей в Safari, как я могу заставить это работать в обоих мирах?
Изменить / добавлено 9/27 около 10:00
Я нашел очень полезный сайт для работы с событиями kbd на разных платформах, в браузерах и ОС. https://www.quirksmode.org/js/keys.html
Используя это, я обнаружил, что на моей платформе Mac OSX / Safari
(backspace) ключ удаления создает событие 'keydown', keyCode: 8, charCode: 0
и ключ удаления создает событие keydown, keyCode: 46, charCode: 0
Итак, похоже, что событие 'keydown' запускается для обоих ключей удаления, но мое приложение по какой-то причине его не видит, как предложил Даниэль ниже. Возможно, мое приложение каким-то образом блокирует событие, но только на платформе Mac / Safari. И приложение скрипки не блокирует его ни на одной платформе. Я думаю, мне просто придется начать удалять части моего приложения, пока я не изолирую проблему.