Хорошо, это довольно сложно, поэтому я попытаюсь объяснить это хорошо.Тип события цветного щелчка невозможен, если вызвано в контексте контекстного события
У меня есть веб-приложение, где я хочу, чтобы мои пользователи меняли цвет фона некоторых div. Для этого я хотел бы использовать интерфейс выбора цвета, и я хочу использовать событие contextmenu для целевых divs, чтобы открыть его, поскольку у них уже есть другое поведение, связанное с событием click.
Итак, идея состоит в том, чтобы на экране был скрыт цвет ввода, привязать его событие click к событию contextmenu в целевых divs и изменить цвет фона целевых divs на событие изменения цвета входного типа.
Самое забавное: заключается в том, что когда я пытаюсь связать события, выбор цвета не открывается, если его событие click вызывается из обработчика события contextmenu, но оно выполняется, если вызвано изнутри события click.
Использование JQuery для кода простоты и cleariness
//this works perfectly, color picker opens
$("#myTargetDiv").on("click", function() {
$("#inputTypeColor").trigger("click");
});
//this fails miserably
$("#myTargetDiv").on("contextmenu", function() {
$("#inputTypeColor").trigger("click");
return false;
});
Самый странный факт является то, что, если я использую третий элемент передать событие, скажем, к примеру, что я зову к промежуточному типу входного текст, который передает вызов от myTargetDiv к inputTypeControl, событие клика в промежуточном элементе запускается (даже при вызове из обработчика события contextmenu), в то время как событие в цвете входного типа не срабатывает.
Но если вы нажмете прямо на текст промежуточного типа ввода, откроется набор цветов!
//If you right click on myTargetDiv "firing!" appears on console, but color picker doesn't opens
$("#myTargetDiv").on("contextmenu", function() {
$("#intermediateElement").trigger("click");
return false;
});
//If you click on intermediateElement, however, the color picker opens!!!
$("#intermediateElement")on("click", function() {
console.log("firing!");
$("#inputTypeColor").trigger("click");
});
Я воспроизведен это поведение в Firefox и Chrome, и я не очень уверен, если это ожидаемая функция, ошибка в браузерах ввода внедренческого типа цвета или проблемы с обработкой с JQuery события (I еще не пробовал запускать сами события).
Кто-нибудь может дать некоторое представление по этому вопросу?
могли бы вы сделать jsfiddle для этого, чтобы мы могли видеть пример того, что вы делаете? Вопрос немного расплывчатый и отключен, как есть. – Twisty
@Twisty https://jsfiddle.net/bardobrave/0z6ev4rd/1/ Если вы нажмете «ПОЖАР!» выбор цвета открывается, но если вы нажмете на него правой кнопкой мыши, выбор цвета не откроется, несмотря на то, что вы нажмете на текст типа ввода, который он делает. – Bardo
Итак, кажется, что HTML5 Color Picker реагирует только на события 'click' и может: 'ant't запускается другими событиями. Трюк в вашей скрипке, вы можете увидеть все огонь: https://jsfiddle.net/Twisty/0z6ev4rd/2/, но так как это не событие клика, сборщик не открывается. Поэтому, если вы хотите создать себе созданное меню, а затем нажать кнопку «Цвет», это будет работать. – Twisty