Chrome window.print () window.close () приводит к «предварительному просмотру печати не удалось».Решение? - PullRequest
13 голосов
/ 04 октября 2011

У меня есть страница для печати, которая открывается в новой вкладке или окне.Полученная страница открывает диалоговое окно печати.После того, как пользователь делает выбор в диалоговом окне печати, страница закрывает вкладку / окно.

window.print();
window.close();

Раньше это прекрасно работало в основных браузерах, но одна из последних версий Chrome ломает это (т.е. 14.0.835.202).

Я получаю следующее сообщение от плагина Chrome Print: «Ошибка предварительного просмотра печати».

У кого-нибудь есть решение закрыть вкладку / окно Chrome после печати?

Ответы [ 12 ]

0 голосов
/ 18 января 2012

Мое решение этого:

window.print();
if(/Chrome/.test(navigator.userAgent)){
  $(window).focus(function(){
    window.location = '/print-thank-you';
  });
} else {
  window.location = '/print-thank-you';
}

РЕДАКТИРОВАТЬ: печать в версии Chrome> = 17 работает так же, как IE / FF, поэтому убедитесь, что вы учитываете это также

0 голосов
/ 16 ноября 2011

мой текущий хак. в основном, сразу после window.print (), я привязываю mousemove, щелкаю и нажимаю клавишу для запуска нужного мне действия (window.close () или window.location.href = где-то;). Конечно, действие не происходит, пока пользователь ничего не делает 1002 *. Но это работает довольно хорошо. (ну, я могу жить, пока ошибка не будет исправлена, по крайней мере)

/* 
// alternative to window.print() for dedicated print windows (had issue with <body onload=window.print()...
// not used anymore.
$('<a id="aprint" href="#" onclick="return window.print()" class="invisible"></a>').appendTo('body');
$('#aprint').trigger('click');
*/
$('body, select, input, textarea, button, submit, form').prop('disabled', true);
window.print();
setTimeout(function() {
    $('body').bind('mousemove click keypress', function () {
        window.location.href=home;                      
    });
}, 200);    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...