按钮的焦点事件未在 iPad 上触发
Focus event for button doesn't fire on iPad
我想在我的网站上添加一个 bootstrap 弹出窗口。当用户使用焦点事件按下按钮时,它应该会出现。这适用于桌面,但不适用于 iPad。 iOS 上的 Safari 似乎没有引发按钮的焦点事件。
作为解决方法,我用 a 标签替换了按钮。这确实有效,但会带来一些其他问题,例如在不添加特定 class 的情况下缺少禁用状态。
<a class="btn btn-outline-secondary" id="ap-btn-selectColor" data-toggle="popover" role="button">
<i class="fa" style="background-color: rgb(140, 181, 255); width: 16px" id="ap-fgColorSelection"> </i>
</a>
<button type="button" class="btn btn-outline-secondary" id="ap-btn-selectBorderColor" data-toggle="popover">
<i class="fa" style="background-color: rgb(0, 51, 142); width: 16px" id="ap-bdColorSelection"> </i>
</button>
$('[data-toggle="popover"]').popover({
content: function () {
return $someElement;
},
placement: 'auto',
html: true,
trigger: 'focus'
});
在我的示例中,弹出窗口适用于第一个元素,但不适用于第二个元素。
有没有办法为 iOS 上的按钮启用焦点事件?
解决方案非常简单。您根本无法在 iOS 设备上使用 button
,因为它没有焦点事件。相反,您应该使用带有 role="button"
的 a
标签和有效的 tabindex
设置。
<a role="button" id="ap-btn-selectBorderColor" class="btn btn-outline-secondary" data-toggle="popover" tabindex="1">
<i class="fa" style="background-color: rgb(0, 51, 142); width: 16px" id="ap-bdColorSelection"> </i>
</a>
我想在我的网站上添加一个 bootstrap 弹出窗口。当用户使用焦点事件按下按钮时,它应该会出现。这适用于桌面,但不适用于 iPad。 iOS 上的 Safari 似乎没有引发按钮的焦点事件。
作为解决方法,我用 a 标签替换了按钮。这确实有效,但会带来一些其他问题,例如在不添加特定 class 的情况下缺少禁用状态。
<a class="btn btn-outline-secondary" id="ap-btn-selectColor" data-toggle="popover" role="button">
<i class="fa" style="background-color: rgb(140, 181, 255); width: 16px" id="ap-fgColorSelection"> </i>
</a>
<button type="button" class="btn btn-outline-secondary" id="ap-btn-selectBorderColor" data-toggle="popover">
<i class="fa" style="background-color: rgb(0, 51, 142); width: 16px" id="ap-bdColorSelection"> </i>
</button>
$('[data-toggle="popover"]').popover({
content: function () {
return $someElement;
},
placement: 'auto',
html: true,
trigger: 'focus'
});
在我的示例中,弹出窗口适用于第一个元素,但不适用于第二个元素。
有没有办法为 iOS 上的按钮启用焦点事件?
解决方案非常简单。您根本无法在 iOS 设备上使用 button
,因为它没有焦点事件。相反,您应该使用带有 role="button"
的 a
标签和有效的 tabindex
设置。
<a role="button" id="ap-btn-selectBorderColor" class="btn btn-outline-secondary" data-toggle="popover" tabindex="1">
<i class="fa" style="background-color: rgb(0, 51, 142); width: 16px" id="ap-bdColorSelection"> </i>
</a>