Windows.print显示打印对话框但在火狐中打印空白页

时间:2012-02-01 13:04:19

标签: javascript firefox

我正在使用经典的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

,这是一个我想出来的工作

function 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 个答案:

答案 0 :(得分:4)

它停止工作,因为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(); };
            }
        }
    }
}