我在iframe模式下使用Colorbox,我看到了一个奇怪的问题,我会很感激帮助搞清楚。我的iframe包含一个表单和另一个iframe(其中包含要打印的内容的预览),在我的表单提交处理程序中,我想在嵌入式iframe上调用window.print(),然后关闭颜色框。我的代码就这样连接起来了:
$('#printer_friendly_form').submit(function () {
var previewWindow = $('iframe#print_preview').get(0).contentWindow;
setZoom($('html', previewWindow.document), 1);
previewWindow.focus();
previewWindow.print();
$('#print_preview').css('visibility', 'hidden');
parent.$.colorbox.close();
return false;
});
“setZoom”位是我正在做的一个小技巧,用于在没有水平滚动条的情况下缩放嵌入式iframe中的内容以进行打印预览;在打印之前我将缩放设置回1,以便正确打印出来。我已经尝试删除此代码,它似乎不会影响手头的问题。
我遇到的问题是,在Chrome关闭Chrome的打印预览对话框后,在彩盒最终关闭之前需要5-8秒。如果我删除“previewWindow.print()”行,颜色框会立即关闭。在我的调试中,Chrome将print视为同步调用,因此只有在打印对话框消失后才会调用close。但它会立即调用,并且函数返回 - 所以我不知道如何解释实际关闭的延迟。
我还在IE9上发现颜色框立即关闭(甚至在打印对话框出现之前,这意味着IE必须是异步的)。同样,Firefox(也像Chrome一样似乎是同步的)在打印对话框完成后立即解散了彩盒。
这是Chrome错误/“功能”,还是我应该做些什么来让对话框立即关闭?
答案 0 :(得分:0)
听起来令人沮丧。我无法想到ColorBox的任何结果会导致这一点,所以我认为它是无关的。如果您执行除colorbox之外的其他操作(例如警报),Chrome是否会发生同样的事情?