こんにちは、IE 9 で printdialog をバイパスする方法を探しています。ie 7/8 にはいくつかの方法がありますが、ie9 では機能しません。
誰かが私にヒントを教えてもらえますか?
マーカスに挨拶
こんにちは、IE 9 で printdialog をバイパスする方法を探しています。ie 7/8 にはいくつかの方法がありますが、ie9 では機能しません。
誰かが私にヒントを教えてもらえますか?
マーカスに挨拶
ここでの成功の鍵となる組み合わせは、onclick イベントで適切な関数を呼び出すこと (window.print() ではなく Print() など) と、IE9 (およびその他のバージョンのIE)。
ただし、print-dialog-bypass ActiveX コントロールを含むページが、信頼できる安全な HTTPS 接続 (自己署名 SSL 証明書ではなく、信頼できる SSL 証明書を使用する接続) を介してアクセスされている場合、セキュリティ設定を構成する必要はないようです。 .
ページがローカル ファイル パス経由でアクセスされている場合、まったく機能しません。ブラウザを制御できないユーザーをターゲットにする場合は、これらの両方を念頭に置いてください。ただし、そのような状況が実際に当てはまる場合は、Java などのテクノロジーを使用するか、ユーザーにネイティブ OS のインストールを要求するなど、別のアプローチを使用することをお勧めします。クーポン印刷 Web サイトで採用されているソフトウェアなど。
いずれにせよ、適切なセキュリティ設定があれば、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 でも動作する可能性があります。IE10 を使用している人がテストできる場合は、報告してください。最良の結果を得るには、ローカル マシンではなく、ホストされているソース (できれば信頼できる HTTPS ソース) から実行することを忘れないでください。
上記のコードを機能させるためにIE9で構成する必要があった設定は次のとおりです。繰り返しますが、ページが Web から提供されている場合にのみ機能しました。しつこくなく動作しました。同じ HTML ファイルをローカル マシンから直接ロードしようとしても、同じセキュリティ設定が構成されていても機能しませんでした。
ピンクの強調表示は、構成されている設定が安全でないことを示しています。注: 'prompt' を選択することもできます。これはよりしつこいですが、ある程度安全であると考えられています。
私は本当にコメントを残したかっただけですが、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 を定義する新しい方法です。これに関する他の記事があります。