Chrome回调多个打印作业

时间:2013-11-28 17:59:29

标签: javascript google-chrome printing callback

我的第一个问题。希望是准确的。 我有以下情况:

我渲染一个显示要打印数据的页面。用户有两个按钮表示的选项:打印1和打印2(它们的名称不同,但无关紧要)。我只会解释一种打印方式,因为另一种打印方式基本相同,只是通过类和单独的打印样式表显示一些额外的列。)

因此,当用户点击打印按钮时,将发生以下情况:

  1. 如果满足打印条件,将通过JQuery AJAX调用JavaScript函数。这样工作正常,调用成功函数,加载数据等。

  2. 根据满足的条件,应执行函数的两个回调函数之一。如果不满足条件,则仅显示警报,但如果是,则回调函数将启动两个打印作业(一个处于横向,一个纵向。我已经读过,没有符合浏览器的方式强制布局在那里:/,所以除了要求用户进行适当的设置之外别无选择。

  3. 现在,我的问题出现了:只执行了两个打印作业的 last 。第一个未处理。我怀疑Chrome会以某种方式覆盖它们。但无论我做什么,只要第二个打印作业通过window.print()开始执行,只有那个发生。奇怪的是,当它没有通过回调实现它时,我得到它的工作。这是一些正在发生的伪代码:

    function checkConditions(yesCallback, noCallback) {
        $.ajax({url, data, success: function(data, textStatus) {
            if (conditionsMet) {
                yesCallback();
            } else {
                noCallback();
            }  
        }});    
    }
    

    点击按钮时的代码:

    $('#button').click(function() {
        event.preventDefault();
    
        checkConditions(
            function() {
                alert('Print this in landscape mode');
                window.print();
                $.ajax({success: function(data, textStatus) {
                    //append new data, arrange them etc. 
                }});
                //and print again
                alert('Now print in portrait mode, please');
                window.print();
            }, 
            function() {
                alert('Cannot print. Conditions not met.');
            });
    };
    

    回调工作正常,它们被调用和处理,两个print语句都被传递。 但基本上会发生什么:firstAlert - > secondAlert - >打印()。 很沮丧。更令人沮丧的是它在IE中工作(即使它打开了2个可能令人困惑的对话框)。

    有谁知道如何在Chrome中解决这个问题?或者如何正确修复它?打印是一个我很少有经验的领域,我很生气,因为它是一个应该强制打印布局的报表应用程序,所以不可能完全改变布局。

0 个答案:

没有答案