【发布时间】:2012-06-17 15:53:05
【问题描述】:
hy 我正在寻找一种绕过 IE 9 中的 printdialog 的方法。我现在有一些适用于 ie 7/8 的方法,但它们在 ie9 对我不起作用
有人可以给我一个提示吗?
问候马库斯
【问题讨论】:
标签: printing internet-explorer-9
hy 我正在寻找一种绕过 IE 9 中的 printdialog 的方法。我现在有一些适用于 ie 7/8 的方法,但它们在 ie9 对我不起作用
有人可以给我一个提示吗?
问候马库斯
【问题讨论】:
标签: printing internet-explorer-9
我真的只是想发表评论,但由于 IE 已经加速,因此应该将其包含在此处。为了获得多平台支持,我将它用于 javascript:
function PrintWindow() {
var isIE11 = !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
if (navigator.appName == "Microsoft Internet Explorer" || isIE11== true) {
var PrintCommand = '<OBJECT ID="PrintCommandObject" WIDTH=0 HEIGHT=0 ';
PrintCommand += 'CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', PrintCommand);
PrintCommandObject.ExecWB(6, 2); PrintCommandObject.outerHTML = "";
window.close();
}
else {
window.print();
}
}
现在检查 IE 11。这是为 Microsoft 定义 userAgent 的一种新方法。还有其他articles关于这个。
【讨论】:
这里成功的关键组合似乎是在 onclick 事件中调用正确的函数(例如 Print() 而不是 window.print() ),以及在 IE9 中配置正确的安全设置(以及任何其他版本的 IE)。
但是,如果通过受信任的安全 HTTPS 连接(具有受信任的 SSL 证书,而不是自签名的SSL 证书)。
如果通过本地文件路径访问页面,则根本不起作用。如果您打算针对您无法控制浏览器的用户,请记住这两者,但是如果确实是这种情况,您可能最好完全使用另一种方法,使用诸如 Java 或要求用户安装本机操作系统软件,例如优惠券打印网站使用的。
无论如何,通过适当的安全设置,IE9 应该允许您使用以下代码绕过打印对话框弹出窗口:
<!DOCTYPE html>
<html>
<head>
<title>Print Test</title>
<script language="VBScript">
sub Print()
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
OLECMDEXECOPT_PROMPTUSER = 1
call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)
End Sub
document.write "<object id='WB' width='0' height='0' classid='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>"
</script>
</head>
<body>
<object id="WebBrowser1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"> </object>
<a href="#" onclick="Print()">Click Here to Print</a>
</body>
</html>
这个确切的代码在 IE7、IE8 和 IE9 中对我有用。我还没有机会使用 IE10,但它也可能在那里工作。如果任何拥有 IE10 的人都可以测试,请务必报告。为获得最佳效果,请记住从托管源运行它,最好是受信任的 HTTPS 源,而不是在本地计算机上运行。
这是我必须在 IE9 中配置的设置才能使上述代码正常工作。同样,它仅在从 Web 提供页面时才有效。它用更少的唠叨工作。如果我尝试直接从本地计算机加载相同的 HTML 文件,即使配置了相同的安全设置,它也不起作用。
粉红色突出显示仅表示配置的此类设置不安全。注意:你也可以选择'prompt',它更唠叨,但被认为有点安全。
【讨论】: