在 Safari 上,为什么在单击该元素之前会在该元素周围出现一个焦点轮廓?

On Safari, why is there a focus outline appearing around this element before it has been clicked on?

这是在 Safari 中发生的,可以通过单击屏幕右下角的“立即聊天”按钮在此处查看:https://online.calvin.edu/

当您单击“立即聊天”按钮时,聊天中的最小化按钮 window 上有一个焦点轮廓。我不明白为什么它默认在 CSS.

中的任何位置应用该轮廓

screenshot

outline:none; 添加到包含 SVG

的最小化 div

就我而言,我尝试使用开发工具:

正在工作

当对话框打开时,浏览器认为 <embeddedservice-chat-header> 有焦点。您可以通过在代码检查器的控制台面板中发出命令 document.activeElement 来查看。如果您通过 tab 键浏览对话框的其余部分并在每个 tab 键后发出 document.activeElement,您将看到焦点移动到“欢迎”<div>(为什么?),三个 <input> 元素,“通过提交”<label>(同样,为什么?),然后是“开始聊天”<button>.

<div><label> 元素不是交互式元素,这就是为什么我要问“为什么”焦点转移到它们。)

继续按 Tab 键,焦点将移回对话框顶部。它移动到最小化按钮,然后是关闭按钮。但是,<embeddedservice-chat-header> 接收焦点,而不是实际的 <button> 元素接收焦点。所以这让我认为自定义 <embeddedservice-chat-header> 元素可能有一些内置的 javascript 将焦点移动到内部元素。