2010-04-16 19 views
11

Je veux imprimer une page Web en utilisant JavaScript. Mais je ne veux pas ouvrir la page comme une fenêtre popup. Comment puis-je imprimer directement une page web comme 'mypage.aspx' en utilisant la méthode JavaScript window.print sans l'ouvrir comme une fenêtre contextuelle?Comment imprimer une page Web sans ouvrir une fenêtre contextuelle?

Aussi la condition est « Je ne veux pas utiliser un ActiveX pour cette »

Voici ce que je veux essayer:

var printWindow, printData; printWindow = window.open("", "printVersion", "menubar,scrollbars,width=640,height=480,top=0,left=0"); 

printData=document.getElementById("lblReport").innerHTML; printWindow.document.write(printData); 
printWindow.document.close(); 
printWindow.print(); 
+3

Quel est le problème avec l'appel de window.print dans votre page Web? – Alsciende

+0

Alsciende, Il n'y a pas de problème d'appeler cela mais avant d'appeler cela, je dois ouvrir une fenêtre, que je ne veux pas ouvrir. Voici le scénario: J'ai une page page1.aspx et maintenant j'ai généré une sortie et qui est dans page2.aspx maintenant comment puis-je imprimer page2.aspx sans ouvrir le même? –

+3

Gaurav, qui appelle window.print(), comme Rosdi l'a suggéré en premier, n'ouvrira pas * une * fenêtre contextuelle. Il ouvrira une boîte de dialogue printoptions, ce n'est pas une fenêtre contextuelle, ce n'est pas quelque chose que vous pouvez éviter. Cette fenêtre est nécessaire pour que l'utilisateur puisse sélectionner l'imprimante à imprimer, le format de papier, etc. –

Répondre

22

La solution est de charger simpliest le contenu de cette MyPage.aspx à un iframe puis iframes événement OnLoad appeler le window.print.

<button onclick="printPage()">print</button> 
<div id="printerDiv" style="display:none"></div> 
<script> 
    function printPage() 
    { 
     var div = document.getElementById("printerDiv"); 
     div.innerHTML = '<iframe src="mypage.aspx" onload="this.contentWindow.print();"></iframe>'; 
    } 
</script> 
+1

Vous m'avez aidé à résoudre ce problème aussi, merci pour l'extrait de code! –

+0

pourquoi est ce truc ne fonctionne pas dans Firefox? –

+0

cela devrait fonctionner, s'il vous plaît voir Console d'erreur, peut-être qu'il y a une erreur (s), merci de vérifier. – jerjer

6
<html> 
    <head> 
     <title>Print</title> 
     <link rel="stylesheet" type="text/css" media="all" href="all.css" /> 
     <link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
    </head> 
<body> 
    <p>I get printed</p> 
    <form> 
     <input type="button" onclick="window.print()" value="Print" /> 
    </form> 
</body> 
</html> 

Assurez-vous all.css est sur le dessus et print.css en bas, ça devrait marcher.

+0

J'ai fait tout, s'il vous plaît passer par ma question et commenter d'abord, puis proposer une solution. –

+5

Gaurav, vous recevez de l'aide gratuite d'une communauté de bénévoles. Les gronder pour des réponses que vous n'aimez pas n'est pas un bon moyen de les encourager à passer leur temps à vous aider ... – sblom

+0

@Gaurav, je réécris la réponse pour inclure un échantillon html complet, j'espère que ça aide. –

1

Um. Il suffit d'utiliser window.print(); directement sur la page. En soi, il n'ouvre pas une nouvelle fenêtre (à part la fenêtre des propriétés d'impression pour définir les options d'impression).

2

Pas sûr que cela fonctionne, mais vous pouvez essayer de créer iframe invisible, charger page2.aspx dedans, puis l'imprimer.

0

Vous pouvez simplement utiliser une feuille de style d'impression CSS et éviter d'utiliser javascript ensemble-tout ce que l'utilisateur doit faire est d'imprimer la page. par exemple.

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
Questions connexes