如果在关闭前调用print(),Colorbox不会立即关闭 - 为什么?

时间:2012-04-26 17:40:55

标签: jquery-plugins colorbox

我在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错误/“功能”,还是我应该做些什么来让对话框立即关闭?

1 个答案:

答案 0 :(得分:0)

听起来令人沮丧。我无法想到ColorBox的任何结果会导致这一点,所以我认为它是无关的。如果您执行除colorbox之外的其他操作(例如警报),Chrome是否会发生同样的事情?