你好,我正在寻找一种绕过 IE 9 中的 printdialog 的方法。我现在有一些适用于 ie 7/8 的方法,但它们在 ie9 对我不起作用
有人可以给我一个提示吗?
迎接马库斯
你好,我正在寻找一种绕过 IE 9 中的 printdialog 的方法。我现在有一些适用于 ie 7/8 的方法,但它们在 ie9 对我不起作用
有人可以给我一个提示吗?
迎接马库斯
这里成功的关键组合似乎是在 onclick 事件中调用正确的函数(例如 Print() 而不是 window.print() ),以及在 IE9 中配置正确的安全设置(以及任何其他版本的IE)。
但是,如果通过受信任的安全 HTTPS 连接(具有受信任的 SSL 证书而不是自签名 SSL 证书的连接)访问具有打印对话框绕过 ActiveX 控件的页面,则似乎不需要配置安全设置.
如果通过本地文件路径访问页面,它根本不起作用。如果您打算针对无法控制其浏览器的用户,请记住这两点,但是如果确实是这种情况,您可能最好完全使用另一种方法,使用 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 文件,即使配置了相同的安全设置,它也不起作用。
粉红色突出显示仅表示配置的此类设置不安全。注意:您也可以选择“提示”,它更唠叨,但被认为有点安全。
我真的只是想发表评论,但由于 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 的一种新方法。还有其他关于此的文章。