@@ -56,11 +56,14 @@ function attachTooltip(target, content = null) {
56
56
}
57
57
58
58
/**
59
- * creating tooltip tippy instance is expensive, so we only create it when the user hovers over the element
59
+ * Creating tooltip tippy instance is expensive, so we only create it when the user hovers over the element
60
+ * According to https://www.w3.org/TR/DOM-Level-3-Events/#events-mouseevent-event-order , mouseover event is fired before mouseenter event
61
+ * Some old browsers like Pale Moon doesn't support "mouseenter(capture)"
62
+ * The tippy by default uses "mouseenter" event to show, so we use "mouseover" event to switch to tippy
60
63
* @param e {Event}
61
64
*/
62
- function lazyTooltipOnMouseEnter ( e ) {
63
- e . target . removeEventListener ( 'mouseenter ' , lazyTooltipOnMouseEnter , true ) ;
65
+ function lazyTooltipOnMouseHover ( e ) {
66
+ e . target . removeEventListener ( 'mouseover ' , lazyTooltipOnMouseHover , true ) ;
64
67
attachTooltip ( this ) ;
65
68
}
66
69
@@ -83,7 +86,7 @@ function getTooltipContent(target) {
83
86
function attachChildrenLazyTooltip ( target ) {
84
87
// the selector must match the logic in getTippyTooltipContent
85
88
for ( const el of target . querySelectorAll ( '[data-tooltip-content], .tooltip[data-content]' ) ) {
86
- el . addEventListener ( 'mouseenter ' , lazyTooltipOnMouseEnter , true ) ;
89
+ el . addEventListener ( 'mouseover ' , lazyTooltipOnMouseHover , true ) ;
87
90
88
91
// meanwhile, if the element has no aria-label, use the tooltip content as aria-label
89
92
if ( ! el . hasAttribute ( 'aria-label' ) ) {
0 commit comments