사용자를 프린터 친화적 인 페이지로 안내하는 “인쇄”링크가있는 페이지가 있습니다. 클라이언트는 사용자가 인쇄용 페이지에 도달하면 자동으로 인쇄 대화 상자가 나타나기를 원합니다. 자바 스크립트로 어떻게 할 수 있습니까?
답변
window.print();
맞춤형 팝업을 의미하지 않는 한.
답변
당신은 할 수 있습니다
<body onload="window.print()">
...
</body>
답변
원하는 필드를 추가하고 그런 식으로 인쇄 할 수 있습니다.
function printPage() {
var w = window.open();
var headers = $("#headers").html();
var field= $("#field1").html();
var field2= $("#field2").html();
var html = "<!DOCTYPE HTML>";
html += '<html lang="en-us">';
html += '<head><style></style></head>';
html += "<body>";
//check to see if they are null so "undefined" doesnt print on the page. <br>s optional, just to give space
if(headers != null) html += headers + "<br/><br/>";
if(field != null) html += field + "<br/><br/>";
if(field2 != null) html += field2 + "<br/><br/>";
html += "</body>";
w.document.write(html);
w.window.print();
w.document.close();
};
답변
많은 프린터에서 많은 페이지에 필요한 가로 인쇄를 기억하도록하기 위해이 작업을 수행합니다.
<a href="javascript:alert('Please be sure to set your printer to Landscape.');window.print();">Print Me...</a>
또는
<body onload="alert('Please be sure to set your printer to Landscape.');window.print();">
etc.
</body>
답변
클릭 이벤트 핸들러가없는 링크 만있는 경우 :
<a href="javascript:window.print();">Print Page</a>
답변
단추에 연결하거나 페이지로드시 연결할 수 있습니다.
window.print();
답변
이미 답변이 제공되었음을 알고 있습니다. 하지만 Blazor 앱 (면도기)에서이 작업을 수행하는 것과 관련하여 자세히 설명하고 싶었습니다.
JSInterop (C #에서 자바 스크립트 함수 실행)을 수행하려면 IJSRuntime을 삽입해야합니다.
RAZOR 페이지에서 :
@inject IJSRuntime JSRuntime
삽입 한 후에는 C # 메서드를 호출하는 클릭 이벤트가있는 버튼을 만듭니다.
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(또는 MatBlazor를 사용하지 않는 경우 더 간단한 것)
<button @onclick="@(async () => await print())">PRINT</button>
C # 메서드의 경우 :
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
이제 index.html에서 :
<script>
function printDocument() {
window.print();
}
</script>
주목할 점은 onclick 이벤트가 비동기식 인 이유는 IJSRuntime이 InvokeVoidAsync와 같은 호출을 기다리고 있기 때문입니다.
추신 : 예를 들어 asp net core의 메시지 상자를 원하신다면 :
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
확인 메시지 상자를 가지려면 :
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
}
도움이 되었기를 바랍니다 🙂