Window.print() из поднабора Chrome - закрыть, затем перерывы

Когда в нашем веб-браузере запущен подзаголовок Chrome, либо с помощью window.open(), либо нажав на ссылку с помощью target="_blank", а затем в этом подполе body onload="window.print()", чтобы автоматически запустить диалог печати и распечатать предварительный просмотр, затем пользователь ЗАКРЫВАЕТ печать/подзаголовок вместо нажатия отменить, родительское окно полностью закрывается. В частности:

  • Никакие события javascript не срабатывают
  • Никакие ссылки не доступны для просмотра.
  • Нажатие F5 показывает небольшой счетчик на вкладке, но страница никогда не перезагружается.
  • Родительское окно действительно мертво - все, что вы можете сделать, это закрыть его.

Если вы нажмете "Отмена" в подзаголовке (где начинается предварительный просмотр печати через window.print()), все в порядке. Но если пользователь закрывает окно, все сумасшествие происходит.

Это известная ошибка в Chrome:

Кто-нибудь знает об обходном пути для этого?

Ответ 1

Вместо использования window.print() просто верните свой контент в новое окно и затем вызовите функцию печати, как указано ниже, для печати содержимого.

Ниже приведен вызов функции, в котором мы передали внутренний элемент html через его id в новое окно.

PrintContent(document.getElementById('div-content-id').innerHTML);

function PrintContent(printableContent) {
    var printWindow = window.open("", "Print_Content", 'scrollbars=1,width=900,height=900top=' + (screen.height - 700) / 2 + ',left=' + (screen.width - 700) / 2);
    printWindow.document.write(printableContent);
    printWindow.document.close();
    printWindow.focus();
    printWindow.print();
    printWindow.close();
    return false;
}

У меня также была такая же проблема, она работает для меня.