在微软Edge中,当您展开菜单时,<select>菜单与其选项之间存在间隙,如下所示:

enter image description here

这可能会导致mouseout事件出现问题,因为该行为与Chrome不一致.考虑这个最小的例子:

const menu = document.getElementById('menu');

menu.addEventListener('mouseout', (e) => {
  // The line below fixes the glitch in Firefox, but not Edge
  if (e.relatedTarget === null) return;
  document.body.classList.toggle('red');
});
.red {
  background: red;
}
<select id="menu">
  <option>One</option>
  <option>Two</option>
  <option>Three</option>
</select>

在Edge中且仅在Edge中,当您在菜单及其展开的选项之间移动鼠标指针时,它会触发mouseout事件.如何防止Edge中的这种行为?

推荐答案

我try 了CBroe的建议,将 Select 包裹在跨度中.我的跨度看起来像:

<span id="wrapper" style="height:20px; display:inline-block">

然后我监听包装上的mouseleave个事件(在这种情况下,鼠标退出将不起作用).这效果很好.select和listbox之间的空间看起来刚刚短于20 px,并且高度固定.你可以try 一下.

Javascript相关问答推荐

基于每个索引迭代嵌套对象

创建1:1比例元素,以另一个元素为中心

React Native平面列表自动滚动

如何使用JavaScript用等效的功能性HTML替换标记URL格式?

vanillajs-datepicker未设置输入值,日期单击时未触发更改事件

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

窗口.getComputedStyle()在MutationObserver中不起作用

Next.js(react)使用moment或不使用日期和时间格式

在react js中使用react—router—dom中的Link组件,分配的右侧不能被 destruct ''

如何从调整大小/zoom 的SVG路径定义新的d属性?""

为什么我的getAsFile()方法返回空?

TypeError:无法分解';React2.useContext(...)';的属性';basename';,因为它为空

在数组中查找重叠对象并仅返回那些重叠对象

try 使用PM2在AWS ubuntu服务器上运行 node 进程时出错

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

如何使用Cypress在IFRAME中打字

我们是否可以在reactjs中创建多个同名的路由

Refine.dev从不同的表取多条记录

ReactJS在类组件中更新上下文