移动菜单中的链接(<ul> <li a>)在使用 'touchend' 而不是 JavaScript 中的 'click' 事件时不起作用
Links in mobile menu (<ul> <li a>) doesn't work when used 'touchend' instead of 'click' event in JavaScript
我是这个领域的新手。我设计了一个简单的网站并使用 javascript 在 类 之间切换以在移动视图上显示和隐藏菜单。但是,有一些问题。第一个问题是在 Safari 浏览器或 iPhone、iPad 等中打开网站时,汉堡包按钮没有响应。然后经过一些研究,我发现如果我将addListener中的'click'替换为'touchend',它就可以工作。我做到了,是的,菜单按预期打开和关闭,但里面的链接不起作用。菜单是一种简单的 Home 之类的东西。请帮我。这非常重要,因为该网站目前正在运行并且没有从潜在客户那里获得任何流量。
Class“汉堡”是汉堡菜单。 div“l1”是菜单图像。
CSS:
#l1{
top: 0;
width: 40px;
height: 5px;
background-color:#018392;
text-align: center;
margin: 8px;
}
HTML
<div id="burger" class="burger">
<div id="l1"></div>
</div>
<nav>
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#g">GALLERY</a></li>
<li><a href="#abt-us">ABOUT</a></li>
</ul>
</nav>
JAVASCRIPT
<script>
window.addEventListener('touchend',function(event){
var bur=document.getElementById("burger");
var menu=document.querySelector('ul');
var l1=document.getElementById("l1");
if((event.target==bur)||(event.target==l1)){
menu.classList.toggle("active");
}
else {
menu.classList.remove("active");
}
});
</script>
“Safari Mobile 7.0+(可能还有更早的版本)存在一个错误,即不会在通常不具有交互性(例如 )且也没有直接附加事件侦听器的元素上触发点击事件元素本身”参见:https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile
因此,请将您的 <div id="burger" class="burger">
替换为互动元素,例如<button id="burger" class="burger"></button>
我是这个领域的新手。我设计了一个简单的网站并使用 javascript 在 类 之间切换以在移动视图上显示和隐藏菜单。但是,有一些问题。第一个问题是在 Safari 浏览器或 iPhone、iPad 等中打开网站时,汉堡包按钮没有响应。然后经过一些研究,我发现如果我将addListener中的'click'替换为'touchend',它就可以工作。我做到了,是的,菜单按预期打开和关闭,但里面的链接不起作用。菜单是一种简单的 Home 之类的东西。请帮我。这非常重要,因为该网站目前正在运行并且没有从潜在客户那里获得任何流量。
Class“汉堡”是汉堡菜单。 div“l1”是菜单图像。
CSS:
#l1{
top: 0;
width: 40px;
height: 5px;
background-color:#018392;
text-align: center;
margin: 8px;
}
HTML
<div id="burger" class="burger">
<div id="l1"></div>
</div>
<nav>
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#g">GALLERY</a></li>
<li><a href="#abt-us">ABOUT</a></li>
</ul>
</nav>
JAVASCRIPT
<script>
window.addEventListener('touchend',function(event){
var bur=document.getElementById("burger");
var menu=document.querySelector('ul');
var l1=document.getElementById("l1");
if((event.target==bur)||(event.target==l1)){
menu.classList.toggle("active");
}
else {
menu.classList.remove("active");
}
});
</script>
“Safari Mobile 7.0+(可能还有更早的版本)存在一个错误,即不会在通常不具有交互性(例如 )且也没有直接附加事件侦听器的元素上触发点击事件元素本身”参见:https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile
因此,请将您的 <div id="burger" class="burger">
替换为互动元素,例如<button id="burger" class="burger"></button>