Приветствую!
<div id="parent">
<span id="child1">asdasd</span>
<span id="child2">qweqweqw</span>
</div>
const parent = document.getElementById('parent');
const child1 = document.getElementById('child1');
parent.addEventListener('copy', (e) => {
console.log('capturing');
console.log(e.target); // Тут указан child1 в качестве target
}, true);
parent.addEventListener('copy', (e) => {
console.log('bubbling');
console.log(e.target); // Тут тоже
}, false);
child1.addEventListener('copy', (e) => {
alert('copied!');
});
Хочу сделать так: если был выделен и скопирован дочерний элемент, то его обработчик события запускается. А вот если был выделен и скопирован родитель (куда входит в т.ч. дочерний элемент 1, но еще и дочерний 2), то обработчик события для дочернего1 не должен запускаться. Можно было бы смотреть на e.target, но при выделении и копировании родительского контейнера в качестве target устанавливается его первый ребенок - почему так, просто ставится в качестве самого глубокого элемента первый ребенок? При том не важно, с какой стороны выделять и копировать. Можно ли как-то изловчиться?
Уточняю, при копировании дочернего1 должен вылазить алерт, при выделении и копировании родителя (вместе с дочерним1, но и с другими элементами), алерт вылазить не должен.
https://jsfiddle.net/fiorsaoirse/uLcwe5ty/13/