簡體   English   中英

Safari無法正確更改焦點上的活動元素

[英]Safari doesn't correctly change active element on 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放在元素上,使其成為activeElement? element.focus()什么也做不了! 謝謝。

編輯: e.currentTarget.focus()確實有效, e.target指向我在<a>具有的span

由於需要onBlur事件,因此可以使用以下內容存檔所需內容:

document.querySelector('a').addEventListener('blur', () => {
    var targetElement = event.target || event.srcElement;
    echoBluredEl(targetElement)
});

function echoBluredEl(ele) {
   document.querySelector('.blured-el-tag').innerHTML = ele.tagName.toLowerCase();
}

至於手動關注焦點,我認為這是ES 6支持問題,請嘗試使用傳統語法

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

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

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM