Сообщение от zxazx
|
Ух ты! работает
теперь бы еще понять как...
спасибо
|
Когда кликается мышка, событие mousedown начинает "всплывать" от того элемента, на котором кликнули, через все родительские, до document.
При этом будут вызываться обработчики события назначенные для него для этих элементов. Но у нас он назначен только для document.
В свойстве event.path - содержится вся последовательность элементов через которое всплывало событие.
event.path[0] - тот на котором нажали
event.path[event.path.length - 1] - document
Когда событие пришло в document мы ищем проходило ли оно, через элемент elem.
Функция массива includes(item) - возвращает true если элемент item содержится в массиве.
Но event.path не массив, а массивоподобный объект, поэтому includes приходится вызывать
через Ж так [].includes.call(ev.path, elem)
Если событие не прошло через elem, то функция вернет false и тем самым отменится стандартная реакция на событие. В том числе и начало выделения.