Window.print(); не работает в Safari

Метод печати не работает в окне при использовании ссылки onclick Safari. Какая альтернатива для печати веб-страницы в сафари через код onclick, который помещается на кнопку? Еще одно странное поведение заключается в том, что при попытке закрыть окно появляется диалоговое окно печати, соответствующее браузеру.

Ответ 1

У вас нет проблем с window.print() с Safari. Извините, я не мог попробовать ОС Windows, но для меня работает код MacOS:

<!DOCTYPE html>
<html>
<body>
  <button onclick="myFunction()">Click me</button>
  <a href="#" onclick="myFunction()">Click link</a>

  <script>
    function myFunction() {
      window.print();
    }
  </script>

</body>
</html>

Ответ 2

Я столкнулся с аналогичной проблемой с браузером Safari (а не с другими). В моем случае прерывание всех вызовов API, которые в настоящее время выполняются, показывается в собственном диалоговом окне печати. ​​

Я предполагаю, почему ваш диалог появился при попытке закрыть вкладку/страницу, так что все сетевые запросы отменены.

Вот пример того, как создать пул ajax-запросов (при использовании jQuery): Остановить все активные запросы ajax в jQuery

Кроме того, чтобы заставить его работать последовательно, мне пришлось обернуть функцию $.xhrPool.abortAll за короткий промежуток времени (100 мс).

Моя функция обработчика кликов (упрощенная) выглядит примерно так:

function myFunction() {
    window.print();
    window.setTimeout(function () {
        $.xhrPool.abortAll()
    }, 100);
}