前段时间我使用jQuery创建了一个轻量级的lightbox插件,它可以将链接中指定的url加载到lightbox中。代码非常简单:
$('.readmore').each(function(i){
$(this).popup();
});
链接将会是这个样子:
<a class='readmore' href='view-details.php?Id=11'>TJ Kirchner</a>
这个插件还可以接受宽度、高度、不同的url和更多要传递的数据等参数。
我现在面临的问题是如何打印灯箱。我设置了灯箱顶部有一个打印按钮。这个链接会打开一个新窗口并打印该窗口。所有这些都由灯箱插件控制。代码如下:
$('.printBtn').bind('click',function() {
var url = options.url + ( ( options.url.indexOf('?') < 0 && options.data != "" ) ? '?' : '&' ) + options.data;
var thePopup = window.open( url, "Member Listing", "menubar=0,location=0,height=700,width=700" );
thePopup.print();
});
问题在于脚本似乎没有等待窗口加载。它想要在窗口出现的一瞬间就打印。因此,如果我点击“取消”以关闭打印对话框,它会一遍又一遍地弹出,直到窗口加载完成。第一次尝试打印时,我得到了一个空白页面,可能是因为窗口没有完成加载。我需要找到一种方法来修改之前的代码块,等待窗口加载完成后再进行打印。我觉得应该有一种简单的方法可以做到这一点,但我还没有找到它。或者,我需要找到一种更好的方法,在父窗口中从灯箱脚本打开弹出窗口并进行打印,而不会改变弹出窗口中的网页代码。