M-ka, это очень категорично, я с вами чуть-чуть не согласен: это не базовая настройка, это использование advanced фич редактора, тех из-за которых саблайм вообще считается дико крутым и мощным: его кастомизируемости. Если в таком ключе мыслить, можно и все вопросы про *nix закрывать, мол, сами выбрали, сами и разбирайтесь)
M-ka: а если посмотреть на вопрос еще раз, можно заметить, что это нужно сделать в одном из самых популярных на данный момент текстовых редакторов - Sublime Text)
Ну да, вопрос имеет прямое отношение только к саблайму, но вот вы же отвечаете на вопросы других людей по JS, не говорите им что "это вопрос к разработчикам JS") Вот у меня так же (то есть как у всех на тостере) - это моя личная проблема, но я надеюсь что кто-то из прочитавших встречался когда-то с подобной проблемой и сможет мне подсказать)
А теперь о нашей теме. Я зашел на ваш маленький сайтик, глянуть чего там. Малюсенький сайтик-визитка, приятный дизайн. Кстати откуда у вас на сайте логотип jQuery, вы же им не пользуетесь?
Смотрю вступление, так сказать. Preloader, событие load, все норм. И тут бац -
<!--[if lt IE 9]>
То есть "ie8 и ie9 это прошлое десятилетие и ими вообще никто не пользуется", но html5shim и respond вы подключили, забавно. Пользователи IE9- ведь идиоты, не обновляют браузеры, а разве хорошие фронтендщики ориентируются на идиотов? Вряд ли. В общем, непонятно тут.
Смотрю далее. Что это тут? Прилипло что-то. У вас тут кто-то целый jQuery забыл. Как так, ведь вы же сами говорили что вам не нравится, что "его юзают где попало, даже в самых простых моментах, где на нативном JS код был бы проще"?
А следом еще и baron.js, который весит как половина jQuery и вдобавок еще почему-то не удостоился минификации. Кстати вы в курсе что его работу на вашем сайте можно увидеть только вручную изменив высоту соответствующих блоков? Сразу пришло в голову - "смысл в таких случаях грузить еще библиотеку?"
Смотрю common.min.js. Не будем останавливаться на том, что он весь состоит из jQuery, тут достаточно будет просто сказать, что, если не считать анонимных функций, в этом скрипте на 17 вызовов функций jQuery приходится всего 3 вызова не-jQuery функций, одна из которых не ваша, а остальные - процедуры, выполненные в jQuery. Проще ведь было на нативном JS, не?
Смотрите, какие сочные, функциональные строчки:
o = ($(".profile"), $(".main__inner"));
...
o.parent().children(".contacts__item"), o.find(".contacts__item-content");
Нууууу.... на этом моменте я наконец понял почему вы считаете, что "jQuery как раз работает в противоположном направлении" ). Действительно, почему бы и не погонять tree traversal функции вхолостую? Как же мне раньше в голову не приходило. Если вы вдруг не поняли: в первой строчке вы дважды посылаете sizzle за плюшками, первый из которых вообще без всякого смысла, ибо результат никуда не сохраняется. Вторая строчка тоже достаточно феерична.
И тут я подумал, что я наверное слишком строг: может быть просто человек делал этот сайт много лет назад? Тогда сейчас он уже наверняка намного более скиловый и пишет все на JS без всяких сторонних библиотек, используя только собственные наработки, а этот сайт остался с тех времен когда ему нужна была аудитория под IE9-, сейчас уже не нужна конечно, он и так успешен, без всяких "идиотов"...
Но сразу же я убеждаюсь в том, критика уместна: последние изменения на сайте сделаны 29-го июля, всего два месяца назад. То есть за два месяца вы успели осознали, что вам не нужен jQuery?
Конечно, все это мелочи. Конечно, никто никогда не заметил бы что вы гоняете tree traversal вхолостую. И конечно же ваш сайт даже со всем этим дерьмом загрузился очень быстро, о наличии preloader я узнал только из кода, не успел его увидеть даже. Но дело в том, что вы на вашем сайте поступили ну прямо вопреки всем сказанным вами словам. Сказали нам что вы не любите когда грузят лишние библиотеки, не любите когда пишут код под jQ, если на чистом JS можно было быстрее и проще, сказали что нет смысла поддерживать идиотов на IE9-, а поступили с точностью до наоборот.
void01: ну мне кажется все эти ухищрения имеют смысл только как теоретические, а в данном случае можно было бы наверное просто "декорировать" navigator.geolocation.getCurrentPosition чтобы при вызове этой функции выполнялись нужные функции и оригинальная navigator.geolocation.getCurrentPosition.
Говоря "сообщают свое месторасположение через браузер" вы имеете в виду Geolocation API ? То есть используете navigator.geolocation.getCurrentPosition?
Денис, вот не ради флейма, а интересно просто: расскажите какие вы используете функции для работы с DOM, как отправляете запросы. Как используете DOMContentLoaded и подобные ему события, как организовываете обработку events? Как добываете информацию о положении/размерах элементов, о стилях?
lemme предложил рабочий вариант, но обычно для таких нужд используют listener который по завершению своей задачи снимают с элемента, removeEventListener. Я пример приводить не буду, думаю все понятно - вешаете нужные вам listeners и один лишний, который будет ждать клика, после чего будет выполнять reachGoal и самоликвидироваться )
Но так уж и быть, два тега удалю.