Windows.print отображает диалоговое окно печати, но печатает пустую страницу в Fire Fox - PullRequest
1 голос
/ 01 февраля 2012

Я использую классический asp, на одной странице я использую метод window.print () для печати страницы. Скрипт, который я использую, отображает диалоговое окно печати и прекрасно печатает в IE, однако с FF он просто печатает пустую страницу

Если я использую control + p для печати страницы в Fire Fox, то страница печатается без проблем, поэтому это не проблема рендеринга

вот скрипт, который я использую:

function printform(url) {

    var windowReference = window.open(url, "Header", 'width=600,height=600,toolbar=no,resizable=yes,scrollbars=yes,menubar=no');
    if (window.print)
        windowReference.print()
}

Заранее спасибо.

Это работа, которую я придумал благодаря Prusse

функция printform (url) {

var windowReference = window.open(url, "Header", 'width=600,height=600,toolbar=no,resizable=yes,scrollbars=yes,menubar=no');
if (window.print)
    if (navigator.appName == "Netscape") {

  windowReference.onload = function(){ windowReference.print(); } 
}
else {
    windowReference.print()
}

}

1 Ответ

4 голосов
/ 01 февраля 2012

Перестал работать, потому что IE уже загрузил документ и уже запустил событие onload. Вы можете проверить, загружен ли уже документ, и просто вызвать print, а если нет, и обработчик события.

function printform(url) {
    var windowReference = window.open(url, "Header", 'width=600,height=600,toolbar=no,resizable=yes,scrollbars=yes,menubar=no');
    //if (window.print)
    //  windowReference.print();
    if (windowReference.print){
        var done = false;
        if (windowReference.document && windowReference.document.readyState){
            var rs = windowReference.document.readyState;
            if ((rs === 'complete') || (rs === 'loaded')){
                done = true;
                windowReference.print();
            }
        }
        if (!done){
            if (windowReference.addEventListener){
                windowReference.addEventListener('load', function(){ this.print(); });
            } else{
                windowReference.onload = function(){ this.print(); };
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...