【发布时间】:2022-01-28 10:20:42
【问题描述】:
最近,我遇到了这个问题,我正在处理一个项目,在主题中,它在 <span> 标签上使用了 click 函数。
它在除Safari 之外的所有浏览器上都运行良好。
我做了一些研究,发现很多人在 Safari 浏览器上遇到过这种问题。
代码如下:
$('.menuOpen').on('click', function() {
console.log('Show Menu');
$('.menuBar').toggleClass('d-none');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<span class="menuOpen">Menu</span>
<ul class="d-none menuBar">
<li>Action 1</li>
<li>Action 2</li>
<li>Action 3</li>
<li>Action 4</li>
</ul>
剧透:我的问题在<span class="menuOpen" role="button">Menu</span> 上使用role="button" 得到了解决。
这里:
Click event on <span> or <div> tag not working safari issue
但是这个问题让我想知道根据 HTML 标准,我们可以为"Click" 事件使用哪些元素。
据我所知,我们可以在几乎所有标签上添加 click 事件,但按照 HTML 标准,我们应该在 <a> 或 <button> 标签上添加点击事件。
在触发click 事件时,是否还有其他符合我们应该使用的标准的 HTML 标记?
【问题讨论】:
-
您可以根据 HTML5 规范在任何标签上设置
onclick事件。 stackoverflow.com/questions/22074841/… -
我无法在 iPadOs15.2.1 上的 Safari 15.2 上重现该问题。
onclick事件在 GlobalEventHandlers mixin 中定义,HTMLElement 接口实现它。所以技术上实现HTMLElement接口的所有元素都应该支持onclick。
标签: html onclick click cross-browser w3c-validation