Ситуация:
Я перехватываю событие и устанавливаю в кастомное свойство свои данные
jQuery("#element_id").click(function(){
event.custom_property = {'any_data'};
});
Позже данное событие перехватывает и обрабатывает функция подключенного стороннего компонента. Происходит там примерно следующее:
if(e.hasOwnProperty('custom_property')){
//обработка прокинутых данных
}
Однако, к моему огорчению мои данные не были обработаны.
Отладив в debugger'е, я установил что e.hasOwnProperty('custom_property')
возвращает false
и не переходит к обработке данных.
Проинспектировав сам объект события, обнаружил что это не оригинальный объект события, а оболочка созданная jQuery(насколько я могу судить), со всем тем же набором данных, кучей плюшек от jQuery, но при этом без пользовательских свойств.
Оригинальный объект события также доступен в оболочке. Он находится в свойстве originalEvent. И уже в нём есть все те данные, которые я прокинул.
Соответственно, проверка e.originalEvent.hasOwnProperty('custom_property')
уже будет давать необходимый нам результат, однако по понятным причинам я не могу просто так пойти и запилить правку в стороннем компоненте ибо после первого же обновления, всё это великолепие слетит.
По-хорошему нужно прокинуть данные именно в оболочку. Однако, проблема в том, что при обработке события я получаю именно оригинальный объект события.
Внимание, вопрос:
Есть ли способ, при обработке события с помощью jQuery получить не оригинальные объект события, а его оболочку, созданную всё тем же jQuery.
Первым параметром всех обработчиков является объект события. Не зависимо от того нативный обработчик (добавленный с помощью .addEventListener
), либо обработчик jQuery.
В обоих случаях это будет нужный объект события: нативный в первом случае и обертка jQuery во втором.
Следовательно нужно изменить код так:
jQuery("#element_id").click(function(e){
e.custom_property = {'any_data'};
});
Кроме того нужно убедиться, что этот обработчик будет выполняться до перехватывательщика, иначе данное поле все равно будет не определено в момент проверки.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли проверить на пустоту блока "blog", если он пустой то мы добавляем таблицу, а если в нем уже есть название и хотя бы одна ячейка, то мы к тому...
Как можно это обойти? Любыми способамиХочется именно не взломать капчу, а обойти само ее генерирование - то есть чтобы она вообще не появлялась