【发布时间】:2015-05-05 15:49:07
【问题描述】:
我正在尝试显示一个打印对话框,用户可以在其中通过按钮控件打印出发票。这段代码的主要部分是 javascript,但我注意到当我点击打印按钮时,(在 4 台不同的电脑上)谷歌浏览器中的弹出窗口阻止程序完全阻止了打印页面。在我允许弹出窗口之后,它工作得很好,但是客户不得不不断地说允许弹出窗口是不方便的。我查找了另一个选项,其中据称 window.createPopup 绕过了浏览器弹出窗口阻止程序,但使用了窗口限制。我也不认为 window.createPopup 是 asp.net 中的一种方法。当我们网站的任何客户因为我无法控制他们的浏览器设置而去打印页面时,如何防止弹出窗口阻止程序阻止打印页面对话框?有可能吗?
<script type="text/javascript">
function PrintGridData() {
var prtGrid = document.getElementById('<%=panel22.ClientID %>');
prtGrid.border = 0;
var prtwin = window.open('', 'Printpanel22Data', 'left=100,top=100,width=1000,height=1000,tollbar=0,scrollbars=1, status=0,resizable=1');
prtwin.document.write(prtGrid.outerHTML);
prtwin.document.close();
prtwin.focus();
prtwin.print();
prtwin.close();
}
</script>
以及调用函数的代码
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
ClientScript.RegisterStartupScript(Me.[GetType](), "PrintOperation", "PrintGridData()", True)
End Sub
【问题讨论】:
-
您的浏览器设置为阻止弹出窗口。将其添加到受信任的站点。或者不要使用弹出窗口,而是使用 CSS 打印媒体来打印您需要的内容。
-
我在问是否有任何方法可以绕过它,因为每个从我们网站购买商品的客户都可以选择打印他们的发票。所以我想尽量避免弹出窗口阻止程序,因为我无法控制客户浏览器
-
您可以检测弹出窗口是否被阻止,但最好使用 CSS Print Media。就像添加新样式表并隐藏您不想打印的内容一样简单。
-
是否有办法在用户使用 CSS 打印媒体时单击按钮时仍显示打印预览或至少向用户显示打印选项?
-
当你触发
window.print()时应该会出现。
标签: javascript asp.net vb.net popupwindow