Курсор меняется на значение по умолчанию после использования history.replaceState () в Safari - PullRequest
0 голосов
/ 29 августа 2018

Я создаю веб-сайт с помощью слайд-шоу и использую history.replaceState(), чтобы добавить хеш и счетный номер к URL при переходе по изображениям.

При наведении курсора на кнопку «Далее» в слайд-шоу курсор изменяется на пользовательскую стрелку с помощью CSS. Когда я нажимаю кнопку, вызывается history.replaceState() - что сбрасывает курсор к значению по умолчанию. Как только я немного переместил курсор, снова появится нужная стрелка.

Это происходит только в Safari - Chrome и Firefox работают нормально. Любые идеи о том, почему это происходит и как этого избежать?

Вот фрагмент проблемы. Его нужно сохранить в свой собственный файл, поскольку вы не можете изменить состояние истории родителя из iframe:

<!DOCTYPE html>
<html>

<head>
  <style>
    #click {
      border: 1px solid black;
      text-align: center;
      padding: 1em;
    }
    
    #click:hover {
      cursor: crosshair;
    }
  </style>
</head>

<body>
  <div id="click">
    Hover and click me and change history!
  </div>
  <div id="hash">
    No hash
  </div>

  <script type="text/javascript">
    var i = 1;

    document.querySelector('#click').addEventListener('click', function() {
      history.replaceState(null, null, '#' + i);
      document.querySelector('#hash').innerHTML = "We now have a hash: " + document.location.hash;
      i++;
    });
  </script>
</body>

</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...