|
前几天,网友 ⑥阿太⑥ 在使用FineUI和打印组件 Lodop时遇到一个问题,在IE8下,每次调用完Lodop结束后会出现如下错误:
(弹出打印窗口时不会出错)
(关闭打印窗口时出错)
并且这个问题在IE9,Firefox,Chrome中都没出现。
前台代码:
- <form id="form1" runat="server">
- <x:PageManager ID="PageManager1" runat="server" />
- <x:Button Text="点击弹出对话框" runat="server" ID="btnHello" OnClick="btnHello_Click">
- </x:Button>
- </form>
复制代码 后台代码:
- public static string GetPrintHtmlJS(string title, int layout, string top, string left, string width, string height, string strHtml)
- {
- var sb = new StringBuilder();
- sb.AppendLine(" function PrintTable(title,layout,strHtml) {");
- sb.AppendLine(" LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));");
- sb.AppendLine(" LODOP.PRINT_INIT(title);");
- sb.AppendLine(" LODOP.SET_PRINT_PAGESIZE(layout, 0, 0, "A4");");
- sb.AppendLine(" LODOP.ADD_PRINT_HTML(" + top + ", " + left + ", " + width + ", " + height + ", strHtml);");
- sb.AppendLine(" LODOP.PREVIEW();");
- sb.AppendLine(" };");
- sb.AppendFormat("PrintTable('{0}',{1},'{2}');", title, layout, HttpUtility.JavaScriptStringEncode(strHtml));
- return sb.ToString();
- }
- protected void btnHello_Click(object sender, EventArgs e)
- {
- var title = "NLodop打印demo";
- var strHtml = "你好 FineUI!请等待1秒钟以上";
- PageContext.RegisterStartupScript(NLodop.GetPrintHtmlJS(title, 1, "10", "15", ""96%"", "1050", strHtml));
- }
复制代码
最后分析这个问题可能是在IE8下弹出打印窗口时阻止了浏览器的JavaScript运行,导致关闭时出错。
最简单的修正方法只需加个延迟就行了:
将:
- sb.AppendFormat("PrintTable('{0}',{1},'{2}');", title, layout, HttpUtility.JavaScriptStringEncode(strHtml));
复制代码
修改为:
- sb.AppendFormat("window.setTimeout(function(){{PrintTable('{0}',{1},'{2}');}},100);", title, layout, HttpUtility.JavaScriptStringEncode(strHtml));
复制代码
即可!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|