Je fais quelque chose comme ça en javascript pour imprimer une section de ma page en cliquant sur un lien
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.print();
newWin.close();
}
Cela fonctionne très bien dans Firefox mais pas dans IE.
Quelqu'un pourrait-il s'il vous plaît aider
Ajoutez ces lignes après newWin.document.write(divToPrint.innerHTML)
newWin.document.close();
newWin.focus();
newWin.print();
newWin.close();
Ensuite, la fonction d'impression fonctionnera dans tous les navigateurs ...
Ajouter newWin.document.close ();, comme ceci:
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.document.close();
newWin.print();
newWin.close();
}
Cela rend IE heureux. 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();
}
J'ai déjà eu ce problème auparavant, et la solution consiste simplement à appeler window.print () dans IE, par opposition à l'appel à partir de l'instance de window:
function printPage(htmlPage)
{
var w = window.open("about:blank");
w.document.write(htmlPage);
if (navigator.appName == 'Microsoft Internet Explorer') window.print();
else w.print();
}
ajouter une condition de vérification pour la charge
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>
Juste pour ajouter des informations supplémentaires. Dans IE 11, en utilisant simplement
window.open()
causes
window.document
être indéfini. Pour résoudre ce problème, utilisez
window.open( null, '_blank' )
Cela fonctionnera également correctement dans Chrome, Firefox et Safari.
Je n'ai pas assez de réputation pour commenter, j'ai donc dû créer une réponse.
Attendez un peu avant de fermer la fenêtre!
if (navigator.appName != 'Microsoft Internet Explorer') {
newWin.close();
} else {
window.setTimeout(function() {newWin.close()}, 3000);
}
La manière dont nous gérons l’impression consiste à ouvrir la nouvelle fenêtre avec tout ce qui doit être envoyé à l’imprimante. Ensuite, nous avons réellement l'utilisateur cliquer sur le bouton Imprimer de leur navigateur.
Cela a toujours été acceptable dans le passé et cela évite les restrictions de sécurité dont parle Chilln.
On m'a dit de faire document.close après document.write, je ne vois ni comment ni pourquoi, mais cela a obligé mon script à attendre jusqu'à ce que je ferme la boîte de dialogue d'impression avant d'exécuter mon 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();
Fermez la fenêtre seulement quand ce n'est pas 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();
}
Cela a fonctionné pour moi, cela fonctionne dans firefox, c.-à-d. Et chrome.
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();
Pour Firefox utiliser
iframewin.print()
pour IE utiliser
iframedocument.execCommand('print', false, null);
voir aussi Impossible d'imprimer un iframe sur IE en utilisant JavaScript, affiche la page parent à la place
Je ne suis pas sûr, mais je pense que cela se produit à cause des règles de sécurité d'InternetExplorer ...
Si vous appelez une fonction telle que print (), il demande manuellement à l'utilisateur s'il souhaite autoriser les scripts actifs. S'il clique sur la barre jaune et sélectionne "Oui", la boîte de dialogue Imprimer apparaît. Si vous cliquez sur 'Non' ou si vous ne faites rien, cela n'exécutera pas les parties considérées comme des scripts actifs ou d'autres fonctions javascript utiles pour la sécurité.
Dans votre exemple, la fenêtre est ouverte, puis print () est appelé, une barre de confirmation apparaît (rien n'est sélectionné, en fait, rien ne peut être sélectionné en raison du temps très court), newWin.close () est appelée, la fenêtre se ferme.
Vous devriez essayer d'ajouter la page aux sites de confiance dans InternetExplorer ou modifier les paramètres de sécurité.
Il peut y avoir un moyen de gérer les politiques de sécurité dans le javascript lui-même, mais je ne connais pas grand chose aux politiques de sécurité d'InternetExplorer.
J'espère que cela t'aides
Je suis aussi confronté à ce problème.
Problème dans IE est newWin.document.write (divToPrint.innerHTML);
lorsque nous supprimons cette fonction d’impression de ligne dans IE fonctionne. Mais, là encore, des problèmes persistent concernant le contenu de la page.
Vous pouvez ouvrir la page en utilisant window.open et écrire le contenu de cette page. alors la fonction d'impression fonctionnera dans IE. C'est une solution alternative.
Meilleure chance.
@Pratik
function functionname() {
var divToPrint = document.getElementById('divid');
newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.location.reload();
newWin.focus();
newWin.print();
newWin.close();
}