Jquery plugins 色盒不';如果在关闭之前调用print(),则无法立即关闭--为什么?

Jquery plugins 色盒不';如果在关闭之前调用print(),则无法立即关闭--为什么?,jquery-plugins,colorbox,Jquery Plugins,Colorbox,我在iframe模式下使用Colorbox,我发现了一个奇怪的问题,希望能得到一些帮助。我的iframe包含一个表单和另一个iframe(其中包含要打印的内容的预览),在表单的提交处理程序上,我希望在嵌入的iframe上调用window.print(),然后关闭颜色框。我的代码是这样连接的: $('#printer_friendly_form').submit(function () { var previewWindow = $('iframe#prin

我在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视为一个同步调用,因此只有在print对话框消失后才会调用close。但它在之后立即被调用,函数返回——所以我不知道如何解释实际关闭时的延迟

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


这是一个Chrome bug/“功能”,还是为了让对话框立即关闭,我应该做些别的事情?

听起来令人沮丧。我想不出在ColorBox的一端会有什么影响,所以我认为这是无关的。如果您执行colorbox以外的其他操作(例如警报),Chrome是否也会发生同样的情况?

因此,我终于回到这个问题上来,似乎问题已经神奇地解决了。我以前忘了检查我的Chrome版本,但现在是19.0.1084.46,所以我猜是最近的更新修复了这个问题。很抱歉在一篇将近一年的帖子中添加了活动,但我现在收到了这个问题。我打开Colorbox-单击打印,关闭“打印对话框”,如果不离开页面,我就无法摆脱Colorbox…我假设您使用的是最新的Chrome版本?我刚刚在我的网站上查看了一下,我没有发现对话框消失的问题。然而,我模糊地回忆起几周前发生过一两次……我从未找到任何根本原因;它似乎只是修复了自己(可能是通过Chrome更新)。当打印对话框初始化时,我最终强制执行了一个
$.fancybox.close()
——简单而容易的修复