javascript - Safari 无法正确更改焦点上的事件元素

标签 javascript html safari focus

我有一个工具提示,它取决于单击时成为事件元素,以便在模糊时它可以隐藏。

在 Chrome 等不错的浏览器中, <button>单击时变为事件元素。在 FF 和 Safari 中则不然(它们甚至不会在元素上调用 focus!)。

所以我切换到 <a> ,但即便如此,在 Safari 中仍然无法正常工作。

这是该问题的演示,请先在 Chrome 中尝试,然后在 Safari 中尝试:

document.querySelector('a').addEventListener('click', () => {
  echoActiveEl();
});

function echoActiveEl() {
  document.querySelector('.active-el-tag').innerHTML = document.activeElement.tagName.toLowerCase();
}

echoActiveEl();
<a href="#blah">Click me</a>

<p>Active element: <span class="active-el-tag"></span></p>

如何让 Safari 正常运行并调用 focus在元素上,使其成为事件元素?做element.focus()什么也没做!谢谢。

编辑: e.currentTarget.focus()确实有效,e.target指向 span我的 <a> .

最佳答案

就手动放置焦点而言,我认为这是 ES 6 支持问题,请尝试使用传统语法

document.querySelector('a').addEventListener('click', function(e) {

  //e.preventDefault();
  this.focus();
  document.querySelector('.active-el-tag').innerHTML = document.activeElement.tagName.toLowerCase();

});

关于javascript - Safari 无法正确更改焦点上的事件元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41035743/

相关文章:

javascript - 将 https 请求发送到本地 http(s) 服务器

javascript - 使用 html javascript 处理目录中的文件

javascript - 如何使用 js 文件中的 JavaScript 代码

html - 如何让CSS动画完成后不反转?里面的例子

javascript - 在 react 渲染返回中使用 if/else

macos - Safari 浏览器中的 Action 链失败

javascript - Highcharts x 轴日期时间问题

jquery - 如何在 bootstrap 中限制年龄最小 3 岁

html - 更改 html 元素可访问性文本

iphone - 适用于 Safari、Iphone 的 Webkit API