mouseenter
event is fired at an
元素
when a pointing device (usually a mouse) is initially moved so that its hotspot is within the element at which the event was fired.
| 冒泡 | No |
|---|---|
| 可取消 | No |
| 接口 |
MouseEvent
|
| 事件处理程序特性 |
onmouseenter
|
Though similar to
mouseover
,
mouseenter
differs in that it doesn't
bubble
and it isn't sent to any descendants when the pointer is moved from one of its descendants' physical space to its own physical space.
mouseenter
event is sent to each element of the hierarchy when entering them. Here 4 events are sent to the four elements of the hierarchy when the pointer reaches the text.
mouseover
event is sent to the deepest element of the DOM tree, then it bubbles up the hierarchy until it is canceled by a handler or reaches the root.
With deep hierarchies, the number of
mouseenter
events sent can be quite huge and cause significant performance problems. In such cases, it is better to listen for
mouseover
事件。
Combined with the corresponding
mouseleave
(which is fired at the element when the mouse exits its content area), the
mouseenter
event acts in a very similar way to the CSS
:hover
pseudo-class.
mouseover
documentation has an example illustrating the difference between
mouseover
and
mouseenter
.
The following trivial example uses the
mouseenter
event to change the border on the
div
when the mouse enters the space alloted to it. It then adds an item to the list with the number of the
mouseenter
or
mouseleave
事件。
<div id='mouseTarget'> <ul id="unorderedList"> <li>No events yet!</li> </ul> </div>
Styling the
div
to make it more visible.
#mouseTarget {
box-sizing: border-box;
width:15rem;
border:1px solid #333;
}
var enterEventCount = 0;
var leaveEventCount = 0;
const mouseTarget = document.getElementById('mouseTarget');
const unorderedList = document.getElementById('unorderedList');
mouseTarget.addEventListener('mouseenter', e => {
mouseTarget.style.border = '5px dotted orange';
enterEventCount++;
addListItem('This is mouseenter event ' + enterEventCount + '.');
});
mouseTarget.addEventListener('mouseleave', e => {
mouseTarget.style.border = '1px solid #333';
leaveEventCount++;
addListItem('This is mouseleave event ' + leaveEventCount + '.');
});
function addListItem(text) {
// Create a new text node using the supplied text
var newTextNode = document.createTextNode(text);
// Create a new li element
var newListItem = document.createElement("li");
// Add the text node to the li element
newListItem.appendChild(newTextNode);
// Add the newly created list item to list
unorderedList.appendChild(newListItem);
}
| 规范 | 状态 |
|---|---|
|
UI Events
The definition of 'mouseenter' in that specification. |
工作草案 |
|
DOM (文档对象模型) 3 级事件规范
The definition of 'mouseenter' in that specification. |
过时 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
mouseenter
event
|
Chrome 30 | Edge 12 | Firefox 10 | IE 5.5 | Opera 17 | Safari 6.1 | WebView Android ≤37 | Chrome Android 30 | Firefox Android 10 | Opera Android 18 | Safari iOS 6.1 | Samsung Internet Android 2.0 |
完整支持
mousedown
mouseup
mousemove
click
dblclick
mouseover
mouseout
mouseenter
mouseleave
contextmenu
元素
accessKey
属性
childElementCount
children
classList
className
clientHeight
clientLeft
clientTop
clientWidth
currentStyle
firstElementChild
id
innerHTML
lastElementChild
localName
名称
namespaceURI
nextElementSibling
onfullscreenchange
onfullscreenerror
openOrClosedShadowRoot
outerHTML
part
prefix
previousElementSibling
runtimeStyle
scrollHeight
scrollLeft
scrollLeftMax
scrollTop
scrollTopMax
scrollWidth
shadowRoot
slot
tabStop
tagName
after()
animate()
append()
attachShadow()
before()
closest()
computedStyleMap()
createShadowRoot()
getAnimations()
getAttribute()
getAttributeNames()
getAttributeNode()
getAttributeNodeNS()
getAttributeNS()
getBoundingClientRect()
getClientRects()
getElementsByClassName()
getElementsByTagName()
getElementsByTagNameNS()
hasAttribute()
hasAttributeNS()
hasAttributes()
hasPointerCapture()
insertAdjacentElement()
insertAdjacentHTML()
insertAdjacentText()
matches()
msZoomTo()
prepend()
querySelector()
querySelector()
querySelectorAll()
querySelectorAll()
releasePointerCapture()
remove()
removeAttribute()
removeAttributeNode()
removeAttributeNS()
replaceChildren()
replaceWith()
requestFullscreen()
requestPointerLock()
scroll()
scrollBy()
scrollIntoView()
scrollIntoViewIfNeeded()
scrollTo()
setAttribute()
setAttributeNode()
setAttributeNodeNS()
setAttributeNS()
setCapture()
setPointerCapture()
toggleAttribute()
afterscriptexecute
auxclick
blur
click
compositionend
compositionstart
compositionupdate
contextmenu
copy
cut
dblclick
DOMActivate
DOMMouseScroll
error
focus
focusin
focusout
fullscreenchange
fullscreenerror
gesturechange
gestureend
gesturestart
keydown
keypress
keyup
mousedown
mouseenter
mouseleave
mousemove
mouseout
mouseover
mouseup
mousewheel
MozMousePixelScroll
msContentZoom
MSGestureChange
MSGestureEnd
MSGestureHold
MSGestureStart
MSGestureTap
MSInertiaStart
MSManipulationStateChanged
overflow
paste
scroll
select
show
touchcancel
touchend
touchmove
touchstart
underflow
webkitmouseforcechanged
webkitmouseforcedown
webkitmouseforceup
webkitmouseforcewillbegin
wheel