我的第一个问题。希望是准确的。 我有以下情况:
我渲染一个显示要打印数据的页面。用户有两个按钮表示的选项:打印1和打印2(它们的名称不同,但无关紧要)。我只会解释一种打印方式,因为另一种打印方式基本相同,只是通过类和单独的打印样式表显示一些额外的列。)
因此,当用户点击打印按钮时,将发生以下情况:
如果满足打印条件,将通过JQuery AJAX调用JavaScript函数。这样工作正常,调用成功函数,加载数据等。
根据满足的条件,应执行函数的两个回调函数之一。如果不满足条件,则仅显示警报,但如果是,则回调函数将启动两个打印作业(一个处于横向,一个纵向。我已经读过,没有符合浏览器的方式强制布局在那里:/,所以除了要求用户进行适当的设置之外别无选择。
现在,我的问题出现了:只执行了两个打印作业的 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中解决这个问题?或者如何正确修复它?打印是一个我很少有经验的领域,我很生气,因为它是一个应该强制打印布局的报表应用程序,所以不可能完全改变布局。