Edge, наведите указатель мыши и щелкните

#javascript #html #css #angular #microsoft-edge

#javascript #HTML #css #угловой #microsoft-edge

Вопрос:

Предполагается, что это всплывающее меню, которое открывается при наведении курсора пользователем.

Это отлично работает в Chrome, я пробовал это несколькими способами (используя CSS :hover , ( mousenter ) и ( mouseleave ) проблема в том, что при использовании Edge, при наведении курсора мыши на мое всплывающее меню и последующем нажатии на элемент в поле выбора — затем запускается mouseout / mouseleave . (Или срабатывает функция остановки наведения курсора мыши) до тех пор, пока мышь не будет перемещена снова.

Это очень расстраивает, поскольку очевидно, что мышь все еще наводит курсор на div, а элемент div должен оставаться открытым. Есть идеи?

HTML:

 <div class="flyoutmenu" [ngClass]="{'flyoutmenuhover': this.hoveringFlyOutMenu}" (mouseover)="this.hoveringFlyOutMenu = true;" (mouseout)="this.hoveringFlyOutMenu = false;">   
    <select [(ngModel)]="selectedAccountNumber" size="20" multiple="false">
       <option *ngFor="let account of accounts" >
          {{account}}
        </option>   
    </select> 
</div>
  

CSS:

 .flyoutmenu {
  z-index: 1000;
  display: block;
  position: absolute;
  left: 0px;
  top:0px;
  bottom:0px;
  margin-top:100px;
  margin-bottom:100px;
  width:40px;
  overflow: hidden;
  background-color: white;
  border: 5px solid gray;
  border-left: none;
  transition: 0.5s ease-in-out;

  select {
    width: 100%;
    min-height: 100%;
  }
}

// .flyoutmenu:hover {
//   width:300px!important;
//   transition: 0.5s ease-in-out;
// }

.flyoutmenuhover {
  width:300px;
  transition: 0.5s ease-in-out;
}
  

Частичный TS:

 public accounts = ['test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6'];
public selectedAccountNumber = '';
public hoveringFlyOutMenu = false;
  

Комментарии:

1. Я заметил, что при добавлении <button> в div и щелчке по этому элементу меню работает правильно и остается открытым. Похоже, это какая-то ошибка совместимости edge с <select> и событием наведения курсора мыши на родительские элементы.

Ответ №1:

Я почти уверен, что это какая-то ошибка в старом добром edge, и, возможно, есть обходной путь, чтобы заставить это работать правильно, но то, что я сделал в этом случае, было удалено <select> и заменено на ngFor <button> затем я стилизовал кнопку, чтобы она выглядела так же, как и параметры.