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 ?
Réponses
Trop de publicités?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 :)
<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
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;
});
- Réponses précédentes
- Plus de réponses