Tôi có một trang có liên kết "In" đưa người dùng đến trang thân thiện với máy in. Máy khách muốn một hộp thoại in xuất hiện tự động khi người dùng đến trang thân thiện với in. Làm thế nào tôi có thể làm điều này với javascript?
Tôi có một trang có liên kết "In" đưa người dùng đến trang thân thiện với máy in. Máy khách muốn một hộp thoại in xuất hiện tự động khi người dùng đến trang thân thiện với in. Làm thế nào tôi có thể làm điều này với javascript?
Câu trả lời:
window.print();
trừ khi bạn có nghĩa là một cửa sổ bật lên tìm kiếm tùy chỉnh.
Tôi thích điều này, để bạn có thể thêm bất cứ lĩnh vực nào bạn muốn và in nó theo cách đó.
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();
};
Tôi làm điều này để đảm bảo họ nhớ in phong cảnh, điều cần thiết cho rất nhiều trang trên nhiều máy in.
<a href="javascript:alert('Please be sure to set your printer to Landscape.');window.print();">Print Me...</a>
hoặc là
<body onload="alert('Please be sure to set your printer to Landscape.');window.print();">
etc.
</body>
Nếu bạn chỉ có một liên kết mà không có trình xử lý sự kiện nhấp chuột:
<a href="javascript:window.print();">Print Page</a>
Tôi biết câu trả lời đã được cung cấp. Nhưng tôi chỉ muốn giải thích về việc làm điều này trong một ứng dụng Blazor (dao cạo râu) ...
Bạn sẽ cần phải tiêm IJSR.78, để thực hiện JSInterop (chạy các hàm javascript từ C #)
TRONG TRANG RAZOR CỦA BẠN:
@inject IJSRuntime JSRuntime
Khi bạn đã tiêm xong, hãy tạo một nút có sự kiện nhấp để gọi phương thức C #:
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(hoặc một cái gì đó đơn giản hơn nếu bạn không sử dụng MatBlazor)
<button @onclick="@(async () => await print())">PRINT</button>
Đối với phương pháp C #:
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
BÂY GIỜ TRONG chỉ số CỦA BẠN.html:
<script>
function printDocument() {
window.print();
}
</script>
Một số điều cần lưu ý, lý do các sự kiện onclick không đồng bộ là do IJSR.78 đang chờ các cuộc gọi như InvokeVoidAsync
PS: Nếu bạn muốn hộp thông báo trong lõi asp net:
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
Để có một hộp thông báo xác nhận:
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
}
Hi vọng điêu nay co ich :)
nếu có vấn đề:
mywindow.print();
sử dụng nhiệt
'<scr'+'ipt>print()</scr'+'ipt>'
Đầy:
$('.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;
});