Mike Ro, ну как обычно, применяем фреймфорки, а потом героически преодолеваем проблемы ими порожденные. ) https://codepen.io/aliencash/pen/VMmade
Но по-честному не понимаю, почему наведение на input должно менять иконку, а наведение на саму иконку - нет...
Может мне за вас весь сайт сверстать? ))) Это всего лишь пример. Доработайте скрипт сами. Подсказка - скрипт активирует выпадающее меню, когда мышь находится над кнопкой его вызывающей. Когда она покидает пределы кнопки - выпадающее меню исчезает. Т.е. нужно добавить активацию меню по наведению на само меню. Все разжёвано, как ребенку. Делайте.
Антон Артёмов, к задаче может быть я подошел не так как это принято в современной разработке, поскольку не в курсе как надо подходить. Но она решена так или иначе. Попробую на примере объяснить. у яндекса есть сервис - поиск по сайту. Для его использования предлагается вставить на сайт некий код, который вставляет форму поиска на сайт и подгружает скрипт //site.yandex.net/v2.0/js/all.js который грузит еще 3 скрипта и после этого поиск становится возможным. Итого 4 загрузки со стороннего сайта, для возможности, которая нужна не всем пользователям.
Я модифицировал инлайн-код яндекс.поиск по сайту таким образом, что он грузит //site.yandex.net/v2.0/js/all.js и всех его потомков, только когда пользователь поставил курсор в поле поиска. профит.
При этом, скачать все с яндекса заранее, положить локально себе на сайт можно. Это была первая мысль. Но вдруг яндекс внесет изменения в свой api с которым работают его скрипты, что подгружаются, и поиск перестанет работать?
Антон Артёмов, у меня задача облегчить и ускорить загрузку сайта. У меня грузится много сторонних скриптов - рекапча для формы обратного звонка, поиск по сайту и т.п. Так вот, зачем мне грузить рекапчу, если пользователь еще не открыл модальное окно с формой, или зачем грузить скрипт поиска по сайту если пользователь не поставил курсор в поле поиска? В чем тут неверный подход?
Не получится аjax'ом. Тут даже не в этом дело, меня бы и GET/POST устроили бы. Проблема в том, что поиск для сайта - это не API и яндекс встроил туда капчу для защиты от автоматических запросов.
async/defer погоды не делают, иначе вопроса бы не было.
Скорость подгрузки как раз не волнует, пока пользователь перенесет руку от мыши к клавиатуре, поза запрос вобьет, успеем подгрузить.
https://codepen.io/aliencash/pen/VMmade
Но по-честному не понимаю, почему наведение на input должно менять иконку, а наведение на саму иконку - нет...