Добавьте прослушиватель щелчков к документу и попробуйте проверить, щелкается ли он внутри элемента контейнера или снаружи.Если щелкнуть внутри, ближайший метод вернет родительский контейнер (он даст вам элемент контейнера), в противном случае, если щелкнуть мышью снаружи, он даст ноль.Нас интересует ноль (щелкнув снаружи), тогда мы скрываем контекстное меню div
document.addEventListener('click', function(e){
let inside = (e.target.closest('#container'));
if(!inside){
let contextMenu = document.getElementById('contextMenuId');
contextMenu.setAttribute('style', 'display:none');
}
});
Если вам нужно установить границу, отличную от этой, просто замените #container
на что-нибудь подходящее.
Немногие браузеры пока не поддерживают ближайший, если вы не используете jQuery, убедитесь, что вы используете функцию pollyfill для ближайшей функции https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
Обновленная скрипта https://jsfiddle.net/28tvp30b/
ПРИМЕЧАНИЕ: ваш элемент контейнерапочти занимает всю страницу, трудно щелкнуть за пределами контейнера.Проверьте, действительно ли вы нажимаете за пределами элемента контейнера.