Firefox не перенаправляет после window.print (); - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть веб-страница с кнопкой, которую я хочу напечатать, а затем перенаправить на другую страницу.Однако, используя Firefox 66, если я прошёл печать, он не перенаправляет.Если я отменяю печать, она перенаправляется очень хорошо.

Вот код:

<SCRIPT LANGUAGE="JavaScript">
  function myprint() {
    window.print();
    window.location='mypage.php';
  }
</script>

<a><button onClick="myprint(); return false;">Print ticket</button></a>

Если я удаляю строку window.print();, она работает нормально, но при печати она делаетне.Также работает на Chrome, Edge и даже IE11, но не на Firefox.

Я что-то упустил?

Обновление: это не только мой компьютер.Компьютеры других людей делают то же самое в Firefox ...

1 Ответ

0 голосов
/ 13 апреля 2019

Прежде всего, ваш код должен работать, но (кстати) лучшая версия:

<SCRIPT LANGUAGE="JavaScript">
  function myprint() {
    window.onafterprint = function(event) {
        window.location.href = 'index.php'
    };

    window.print();
  }
</script>

<a><button onClick="myprint(); return false;">Print ticket</button></a>

Если вы создаете функцию, которая должна вызывать после , печать завершена. Это событие (window.onafterprint) поддерживается всеми браузерами, кроме сафари (EDIT: yep, из MDN )

По какой-то причине этот код не работает с 64-битным Firefox 66.0.3 (в моем случае), но работает безупречно с IE11 и Chrome 73.

Ну, на самом деле это работает , если вы отменяете печать по запросу, но не если вы действительно печатаете.

Обходной путь - использовать другое событие, onbeforeprint, которое изменяет страницу перед печатью (идея состоит в том, чтобы удалить такие вещи, как реклама, перед печатью, а затем использовать onafterprint для восстановления страницы). Когда я пытался, кажется, что печатается первая страница, а не вторая, так что это событие также прерывается.

Кажется, этот способ работает.

<SCRIPT LANGUAGE="JavaScript">
  function myprint() {
    window.onbeforeprint = function(event) {
        window.location.href = 'index.php'
    };

    window.print();
  }
</script>

<a><button onClick="myprint(); return false;">Print ticket</button></a>
...