171 votes

Comment faire apparaître une boîte de dialogue d'impression à l'aide de Javascript ?

J'ai une page avec un lien "Imprimer" qui amène l'utilisateur à une page imprimable. Le client souhaite qu'une boîte de dialogue d'impression apparaisse automatiquement lorsque l'utilisateur arrive sur la page imprimable. Comment puis-je faire cela avec javascript ?

2voto

thestar Points 384

Vous pouvez le lier à un bouton ou au chargement de la page.

window.print();

2voto

James Heffer Points 178

Je sais que la réponse a déjà été fournie. Mais je voulais juste donner des précisions sur la façon de faire cela dans une application Blazor (razor)...

Vous devrez injecter IJSRuntime, afin d'exécuter JSInterop (exécuter des fonctions javascript à partir de C#).

DANS VOTRE PAGE DE RASOIR :

@inject IJSRuntime JSRuntime

Une fois que vous l'avez injecté, créez un bouton avec un événement de clic qui appelle une méthode C# :

<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>

(ou quelque chose de plus simple si vous n'utilisez pas MatBlazor)

<button @onclick="@(async () => await print())">PRINT</button>

Pour la méthode C# :

public async Task print()
{
    await JSRuntime.InvokeVoidAsync("printDocument");
}

Maintenant, dans votre index.html :

<script>
    function printDocument() {
        window.print();
    }
</script>

Il faut noter que la raison pour laquelle les événements onclick sont asynchrones est que IJSRuntime attend ses appels tels que InvokeVoidAsync.

PS : Si vous voulez une boîte de messages dans asp net core par exemple :

await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");

Pour avoir une boîte de message de confirmation :

bool question = await JSRuntime.InvokeAsync<bool>("confirm", "Are you sure you want to do this?");
    if(question == true)
    {
        //user clicked yes
    }
    else
    {
        //user clicked no
    }

J'espère que cela vous aidera :)

0voto

<script>
    const _print = () => {
        window.print();
    }
</script>

o

<body onload="window.print();"></body>

voir la documentation ici : https://developer.mozilla.org/en-US/docs/Web/API/Window/print

-7voto

Limitless isa Points 270

Si problème :

 mywindow.print();

utilisation alternative :

'<scr'+'ipt>print()</scr'+'ipt>'

Plein :

 $('.print-ticket').click(function(){

        var body = $('body').html();
        var ticket_area = '<aside class="widget tickets">' + $('.widget.tickets').html() + '</aside>';

        $('body').html(ticket_area);
        var print_html = '<html lang="tr">' + $('html').html() + '<scr'+'ipt>print()</scr'+'ipt>' + '</html>'; 
        $('body').html(body);

        var mywindow = window.open('', 'my div', 'height=600,width=800');
        mywindow.document.write(print_html);
        mywindow.document.close(); // necessary for IE >= 10'</html>'
        mywindow.focus(); // necessary for IE >= 10
        //mywindow.print();
        mywindow.close();

        return true;
    });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X