iv id="raz" tabindex="0" // подсказка пропадает, если на неё фокус
let raz = document.querySelector('#raz');
let dva = document.querySelector('#dva');
raz.addEventListener('focus', function(e) {
dva.style.visibility = "visible";
})
raz.addEventListener('pointerenter', function(e) {
e.target.focus();
})
raz.addEventListener('blur', function(e) {
dva.style.visibility = "";
})
raz.addEventListener('mouseleave', function(e) {
e.target.blur();
})
iv id="raz" tabindex="0"
div id="dva" tabindex="0"
let raz = document.querySelector('#raz');
let dva = document.querySelector('#dva');
raz.addEventListener('focus', function(e) {
dva.style.visibility = "visible";
})
raz.addEventListener('pointerenter', function(e) {
e.target.focus();
})
raz.addEventListener('blur', function(e) {
let related = e.relatedTarget ? event.relatedTarget.id : "null";
if (related != "dva") dva.style.visibility = "";
})
dva.addEventListener('blur', function(e) {
let related = e.relatedTarget ? event.relatedTarget.id : "null";
if (related != "raz") dva.style.visibility = "";
})
raz.addEventListener('mouseleave', function(e) {
if (!window.hasOwnProperty('ontouchstart')) e.target.blur(); // проверка на tach
})