У нас есть приложение, которое может запускать функции javascript для различных событий (например, onBlur).Функция просто получила идентификатор и атрибут _id для элемента, который вызвал событие.Для Chrome event.target неожиданно перестал работать, и я подозреваю, что это как-то связано с недавним изменением в Chrome: https://chromium.googlesource.com/chromium/src/+/dcfa1803d4408370e3b1a187b84d4a6b620f491a
onBlur__Invalid : function () {
// For Internet Explorer
if (window.navigator.userAgent.indexOf("MSIE ") > -1) {
var currentId = window.event.srcElement.getAttribute('_id');
var currentTarget = '#' + window.event.srcElement.id;
}
// For other browsers
else {
var currentId = event.target.getAttribute('_id');
var currentTarget = '#' + event.target.id;
}
// Show Hint-message if x-form-invalid
if (currentId.indexOf("date_") > -1 && $(currentTarget).hasClass('x-form-invalid')) {
$(currentTarget).parents().eq(5).next().addClass('is_invalid');
}
else {
$(currentTarget).parents().eq(5).next().removeClass('is_invalid');
}
if($(currentTarget).hasClass('x-form-invalid')) {
$(currentTarget).parent().next().addClass('is_invalid');
}
else {
$(currentTarget).parent().next().removeClass('is_invalid');
}
},
Кто-нибудь знает альтернативу event.target, которая работает с Chromeи этот сценарий, или видите причину для этого сценария просто перестать работать на ночь?Как только скрипт входит в оператор else, он завершается ошибкой и перестает работать.Добавление try / catch приводит к следующей ошибке: «TypeError: Невозможно прочитать свойство 'target' из undefined"
Редактировать: если я передам атрибут _id из вызова функции onBlur следующим образом:
ca_fd.js.onBlur__Invalid("sel_1");
Мне удалось заставить его работать так:
onBlur__Invalid : function (e) {
// Show Hint-message if x-form-invalid
var currentTarget= '\'input[_id="' + e + '"]\''
alert($(currentTarget).attr('id'));
if (e.indexOf("date_") > -1 && $(currentTarget).hasClass('x-form-invalid')) {
$(currentTarget).parents().eq(5).next().addClass('is_invalid');
}
else {
$(currentTarget).parents().eq(5).next().removeClass('is_invalid');
}
if($(currentTarget).hasClass('x-form-invalid')) {
$(currentTarget).parent().next().addClass('is_invalid');
}
else {
$(currentTarget).parent().next().removeClass('is_invalid');
}
},
Вызов раньше был ca_fd.js.onBlur__Invalid (); так что это означает, что мне нужно вручную добавить _id во все элементы ввсе формы в конструкторе форм приложения.В этом случае предупреждение будет возвращать «x-auto-16».
Надеюсь, приложение сможет передать нужный мне _id с помощью переменной, но я еще не нашел ее.Добавление события или _id просто возвращает undefined.