Функция window.print () и window.close () Safari IOS закрывает окно, не дожидаясь предварительного просмотра - PullRequest
0 голосов
/ 24 декабря 2018

В Safari в IOS функция печати и закрытия JavaScript не работает, как в других браузерах.Если вы звоните window.print() в одиночку, это похоже на работу.Однако, если вы вызываете window.close() сразу после этого, кажется, что оно закрывает окно и предварительный просмотр печати, хотя окно предварительного просмотра печати все еще открыто, оно не ждет завершения предварительного просмотра печати или отменяется, чтобы закрыть окно, и просто закрываетсяокно открывается немедленно.

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

СОВЕТ: Если у вас есть Mac и Xcode, вы можете открыть симулятор IPhone и получить доступ к localhost с помощью python, запустив сервер python -m SimpleHTTPServer 8000.Чтобы получить доступ к симулятору, откройте Xcode, затем Xcode> Откройте Инструменты разработчика> Симулятор

Вот код:

<!DOCTYPE html>
<html>
<head>
<style>
table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
</style>
</head>
<body>
<table class="table">
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>

<button onclick="myPrintFunction()">Click me</button>

<script>
  function myPrintFunction() {
    let divToPrint = document.getElementsByClassName("table")[0];
    if (typeof divToPrint !== 'undefined') {
      let newWin = window.open();
      newWin.document.write('<h1>PRINT FRIENDLY</h1>');
      newWin.document.write(divToPrint.outerHTML);
      newWin.document.close();
      newWin.focus();
      setTimeout(()=>{
        newWin.print();
        newWin.close();
      }, 1000);
    } else {
      alert('NO EVENTS TO PRINT!');
    }
  }
</script>

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