7
votes

Comment puis-je masquer le bouton avant d'imprimer et de le montrer lorsque le processus d'impression est terminé?

J'ai un bouton d'impression avec id = "print_req" code>. J'ai écrit du code JavaScript pour imprimer une page, qui est déclenchée en cliquant sur ce bouton, et je souhaite également masquer ce bouton avant d'imprimer et le montrer après l'impression entier. Je veux dire ne pas imprimer le bouton dans mon document imprimé. Voici mon code:

$(document).ready(function(){
    $("#print_req").click(function(){
        $("#print_req").css("display","none");
        window.print();  
    });

    $("#print_req").css("display","block");
    return false;   
});


1 commentaires

Repenser votre réponse puisqu'il y a une meilleure façon de le faire. L'utilisation d'une image d'arrière-plan n'est pas une bonne solution.


6 Réponses :


3
votes

Le problème est que vous ne pouvez pas savoir lorsque l'impression est terminée à l'aide de JavaScript. Il n'y a pas d'événement qui sera déclenché pour l'informer.

Pour des raisons de sécurité JavaScript est exécutée dans un environnement de sandbox à l'intérieur du navigateur limitant son accès à toutes les ressources système.



0
votes

La boîte de dialogue Imprimer fait partie du système d'exploitation. JavaScript ne peut accéder que des éléments qui font partie de la page Web - tout d'autre serait une infraction de sécurité majeure.


0 commentaires

18
votes

Vous allez à ce faux. Vous ne devriez pas afficher et masquer le bouton avec JavaScript ou utiliser une image d'arrière-plan pour le faire. Vous devez utiliser une feuille de style d'impression qui vous permettra d'appliquer différents styles à la page lorsqu'il est imprimé. Dans votre cas, vous définiriez l'affichage sur Aucun [ou visibilité à caché] dans cette feuille de style.

Donc, vous ajoutez une feuille de style avec le type de support pour imprimer p> xxx pré>

dans ce fichier imprimé.css, vous masquez le bouton P>

.printButtonClass{ display : none }


5 commentaires

Votre droite, mais j'imprime une Div qui est dans une page que le bouton existe! Je veux dire que chaque style sur la boîte d'impression affectera le bouton de la charge de chargement! Par exemple: Si je fais votre suggestion, il va cacher le bouton au début!


Et aussi je ne veux pas faire un travail aussi complexe pour faire cette chose simple. Mais merci mon pote


Cela ne cachera pas le bouton jusqu'à ce que la page soit imprimée ou affichée dans l'aperçu d'impression. Il n'effectue que le style du bouton que vous mettez une classe sur. Il n'aura pas affecter la page dans de toute façon. Votre solution de la définition de l'image ajoute également plus de problèmes avec l'accessibilité et que si l'utilisateur a des images désactivées? Saviennent-ils à imprimer avec ce bouton? Je trouve de toute façon le bouton d'impression, car il y en a un intégré à mon navigateur.


@armin no, remarquez le media = "Imprimer" dans l'exemple ci-dessus. Cela signifie que ces styles ne seront utilisés que pour la version imprimée d'une page, elles seront ignorées (et le bouton sera visible) lorsque la page est à l'écran.


Oh, super .. :) J'ai tellement appris de vos explications. Merci beaucoup de copains, ça m'a vraiment aidé.yeah, votre réponse est meilleure que la mienne, je ferai votre offre :)



3
votes

C'est facile, veuillez simplement l'utiliser, appliquez la classe NOPRINT sur votre bouton.

 @media print {
   .noprint{
      display: none !important;
   }
}


1 commentaires

Cette réponse est bien meilleure que la réponse acceptée car elle ne nécessite pas de feuille de style supplémentaire.



0
votes
function printFunction() {

var restoreoriginalpage = document.body.innerHTML;
$('#print-button').css('visibility', 'hidden'); //hiding print button before it prints
var printcontent = document.getElementById("content").innerHTML;
document.body.innerHTML = printcontent;
window.print();                    
document.body.innerHTML = restoreoriginalpage; //restore original page        
}

0 commentaires

0
votes

Faites simplement cela ...

$ (document) .Ready (fonction (fonction () { xxx


0 commentaires