0

我在 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 将打印视为同步调用,因此仅在打印对话框消失后才调用 close。但是它在之后立即被调用,并且函数返回——所以我不知道如何解释实际关闭的延迟。

我还在 IE9 上发现颜色框会立即关闭(甚至在打印对话框出现之前,这意味着 IE 必须是异步的)。同样,Firefox(似乎也像 Chrome 一样是同步的)在打印对话框完成后立即关闭颜色框。

这是 Chrome 错误/“功能”,还是我应该做其他事情才能让对话框立即关闭?

4

1 回答 1

0

这听起来令人沮丧。我想不出 ColorBox 的任何事情会促成这一点,所以我认为它是不相关的。如果您执行除颜色框以外的其他内容(例如警报),Chrome 是否也会发生同样的事情?

于 2012-04-27T03:22:09.387 回答