event.target и Chrome 71.0.3578.98 - PullRequest
       1

event.target и Chrome 71.0.3578.98

0 голосов
/ 19 декабря 2018

У нас есть приложение, которое может запускать функции 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...