Как избежать двойного клика?
Двойной клик обычно может происходить по следующим причинам:
1) Задан обработчик на одно и то же событие у самого элемента и у элемента-контейнера, в котором он находится. В этом случае поможет метод event.stopPropagation(), который предотвращает всплытие события.
2) Дополнительно срабатывает встроенный обработчик браузера (в частности, при клике по ссылке браузер попытается по ней перейти). Чтобы запретить браузеру делать какие-то действия по умолчанию, используйте метод event.preventDefault(). Этот метод часто используется совместно с предыдущим.
3) Пользователь слишком быстро делает подряд 2 клика. В этом случае нужно вызывать обработчик не ранее чем через определенное время после последнего срабатывания (debounce)
Можно в обработчике события клика на body проверять event.target и совершать переход только если это клик не по ссылке.
Можно на ссылку повесить обрабочик события клика и запретить событию всплывать
https://learn.javascript.ru/event-bubbling