我有一个工具提示,它取决于单击时成为事件元素,以便在模糊时它可以隐藏。
在 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/