這是我的菜單HTML:找到event.target ID在純JavaScript
<header style="padding:0;height:2em;margin-bottom:0.5em;">
<div id="menuDiv" class="dropdown" style="float:left;padding-top:0.4em;" >
<svg id="menuIcon" style="width:2em;height:1.4em;">
<line x1="0" y1="0.1em" x2="2em" y2="0.1em" class="menuSVG" />
<line x1="0" y1="0.6em" x2="2em" y2="0.6em" class="menuSVG" />
<line x1="0" y1="1.1em" x2="2em" y2="1.1em" class="menuSVG" />
</svg>
<div id="menuContent">
<button class="buttonList">blah</button>
<button class="buttonList">bla blah</button>
<button class="buttonList">bla</button>
<button class="buttonList">blah</button>
</div>
</div>
....
</header>
而CSS:懸停性能和Javascript鼠標懸停和的mouseenter事件的鉻,IE或Safari觸摸設備的工作非常不同,我決定讓我的菜單下拉是這樣的: 要顯示的下拉有功能:
document.getElementById("menuDiv").addEventListener("mouseover",showMenu);
function showMenu() {
document.getElementById("menuContent").style.display="block";
document.getElementById("menuIcon").style.display="none";
}
要隱藏下拉我想用mouseover
事件對整個窗口的工作除了<div id="menuDiv">
。代碼是:
window.addEventListener("mouseover", hideMenu);
function hideMenu(event) {
var x = document.getElementById("menuContent");
var y = document.getElementById("menuIcon");
let e = event || window.event;
let target = e.srcElement.id;//HERE IS PROBLEM
if (target !=="menuDiv") {
//if (x.style.display==="block") {
x.style.display="none";
y.style.display="block";
//}
}
}
我不知道,如果hideMenu()
功能completelly錯誤或我只需要得到莫名其妙的事件ID(元素,在鼠標指向的ID)。有一些解決方案,但只有在jQuery中。
'e.target.id'是正確。 'srcElement'是IE。 – Mouser
要隱藏下拉菜單,您可以使用mouseout或mouseleave事件。這更簡單,更清晰。 – Yamin
@Yamin謝謝,但我不能使用'mouseout'。在帶有觸摸屏的IE中,只需在屏幕上一次觸摸後執行全部3個事件:鼠標懸停,點擊,鼠標懸停。所以如果你觸摸屏幕一次,下拉顯示(鼠標懸停)並立即隱藏(鼠標懸停)。在鉻工作正常。 –