私はリンクをクリックするとページのセクションを印刷するためにjavascriptでこのようなことをしています
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.print();
newWin.close();
}
Firefoxではうまく機能しますが、IEでは機能しません。
誰か助けてください
newWin.document.write(divToPrint.innerHTML)
の後にこれらの行を追加します
newWin.document.close();
newWin.focus();
newWin.print();
newWin.close();
その後、印刷機能はすべてのブラウザで動作します...
newWin.document.close();を追加:
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.document.close();
newWin.print();
newWin.close();
}
これにより、IE幸せになります。HTH、-Ted
function printDiv() {
var divToPrint = document.getElementById('printArea');
newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.location.reload();
newWin.focus();
newWin.print();
newWin.close();
}
私は以前にこの問題を抱えていましたが、解決策は、ウィンドウインスタンスからprintを呼び出すのではなく、IEでwindow.print()を呼び出すことです:
function printPage(htmlPage)
{
var w = window.open("about:blank");
w.document.write(htmlPage);
if (navigator.appName == 'Microsoft Internet Explorer') window.print();
else w.print();
}
オンロードのチェック条件を追加します
if (newWinObj.onload) {
newWinObj.onload = function() {
newWinObj.print();
newWinObj.close();
};
}
else {
newWinObj.print();
newWinObj.close();
}
<!DOCTYPE html>
<html>
<head id="head">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=Edge" />
<!-- saved from url=(0023)http://www.contoso.com/ -->
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div>
<div>
Do not print
</div>
<div id="printable" style="background-color: pink">
Print this div
</div>
<button onClick="printdiv();">Print Div</button>
</div>
</body>
<script>
function printdiv()
{
var printContents = document.getElementById("printable").innerHTML;
var head = document.getElementById("head").innerHTML;
//var popupWin = window.open('', '_blank');
var popupWin = window.open('print.html', 'blank');
popupWin.document.open();
popupWin.document.write(''+ '<html>'+'<head>'+head+'</head>'+'<body onload="window.print()">' + '<div id="printable">' + printContents + '</div>'+'</body>'+'</html>');
popupWin.document.close();
return false;
};
</script>
</html>
いくつかの追加情報を追加するだけです。 In IE 11、単に使用
window.open()
原因
window.document
未定義になります。これを解決するには、次を使用します
window.open( null, '_blank' )
これは、Chrome、Firefox、Safariでも正常に機能します。
私はコメントするのに十分な評判がないので、答えを作成しなければなりませんでした。
しばらく待ってからウィンドウを閉じてください!
if (navigator.appName != 'Microsoft Internet Explorer') {
newWin.close();
} else {
window.setTimeout(function() {newWin.close()}, 3000);
}
通常、印刷を処理する方法は、プリンターに送信する必要があるすべてのものを含む新しいウィンドウを開くことです。次に、ユーザーに実際にブラウザの[印刷]ボタンをクリックさせます。
これは過去において常に容認されており、Chillnが話しているセキュリティ制限を回避します。
Document.writeの後にdocument.closeを実行するように言われましたが、方法や理由がわかりませんが、これにより、window.closeを実行する前に印刷ダイアログを閉じるまでスクリプトが待機していました。
var printContent = document.getElementbyId('wrapper').innerHTML;
var disp_setting="toolbar=no,location=no,directories=no,menubar=no, scrollbars=no,width=600, height=825, left=100, top=25"
var printWindow = window.open("","",disp_setting);
printWindow.document.write(printContent);
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
IE以外の場合にのみウィンドウを閉じます。
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.print();
if (navigator.appName != 'Microsoft Internet Explorer') newWin.window.close();
}
これは私のために働いた、それはFirefox、つまりクロムで動作します。
var content = "This is a test Message";
var contentHtml = [
'<div><b>',
'TestReport',
'<button style="float:right; margin-right:10px;"',
'id="printButton" onclick="printDocument()">Print</button></div>',
content
].join('');
var printWindow = window.open();
printWindow.document.write('<!DOCTYPE HTML><html><head<title>Reports</title>',
'<script>function printDocument() {',
'window.focus();',
'window.print();',
'window.close();',
'}',
'</script>');
printWindow.document.write("stylesheet link here");
printWindow.document.write('</head><body>');
printWindow.document.write(contentHtml);
printWindow.document.write('</body>');
printWindow.document.write('</html>');
printWindow.document.close();
Firefoxの使用
iframewin.print()
for IE use
iframedocument.execCommand('print', false, null);
よくわかりませんが、InternetExplorerのセキュリティルールが原因で発生すると思います...
Print()などの関数を呼び出すと、アクティブなスクリプトを許可するかどうかをユーザーに手動で尋ね、黄色のバーをクリックして「はい」を選択すると、印刷ダイアログが表示されます。 「いいえ」をクリックするか、何もしないと、アクティブスクリプトまたはその他のセキュリティ関連のJavaScript関数と見なされる部分は実行されません。
あなたの例では、ウィンドウが開いてからprint()が呼び出され、確認バーがポップアップします(何も選択されておらず、実際には短時間のために何も選択できません)、newWin.close()が呼び出され、ウィンドウが閉じます。
InternetExplorerで信頼済みサイトにページを追加するか、セキュリティ設定を変更してください。
JavaScript自体でセキュリティポリシーを処理する方法があるかもしれませんが、InternetExplorerセキュリティポリシーについてはあまり知りません。
お役に立てれば
私もこの問題に直面しています。
IE is newWin.document.write(divToPrint.innerHTML);の問題
IEは機能しています。ただし、ページのコンテンツに関する問題がまだ存在しています。
Window.openを使用してページを開き、そのページにコンテンツを書き込むことができます。 IEで印刷機能が動作します。これは代替ソリューションです。
幸運。
しゅう
function functionname() {
var divToPrint = document.getElementById('divid');
newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.location.reload();
newWin.focus();
newWin.print();
newWin.close();
}