#javascript #jquery
Вопрос:
Я пытаюсь отобразить текущую дату и время, когда пользователь нажимает на кнопку печати. Я не хочу видеть дату и время на своей веб-странице. Это тот контент, который я хочу распечатать:
<div class="box" id="dvContents">
this is the content, I want to print
<div id="CalculateGrid" style="margin-top: 60px">
<asp:Label ID="lblDateTime" runat="server" Style="margin-left: 25%; display: none;" />
</div>
</div>
По нажатию кнопки asp я вызываю функцию Javascript. Ниже приведена кнопка и функция javascript:
<asp:LinkButton ID="print" runat="server" OnClientClick="PrintDiv();">Print</asp:LinkButton>
Ниже приведена функция javascript:
<script>
function PrintDiv() {
document.getElementById('<%=lblDateTime.ClientID %>').style.display = "block";
document.getElementById('<%=lblDateTime.ClientID %>').innerHTML = new Date().toLocaleString();
var contents = document.getElementById("dvContents").innerHTML;
var frame1 = document.createElement('iframe');
frame1.name = "frame1";
frame1.style.position = "absolute";
frame1.style.top = "-1000000px";
document.body.appendChild(frame1);
var frameDoc = (frame1.contentWindow) ? frame1.contentWindow : (frame1.contentDocument.document) ? frame1.contentDocument.document : frame1.contentDocument;
frameDoc.document.open();
frameDoc.document.write('<html><head><title>DIV Contents</title>');
frameDoc.document.write('</head><body>');
frameDoc.document.write(contents);
frameDoc.document.write('</body></html>');
frameDoc.document.close();
setTimeout(function () {
window.frames["frame1"].focus();
window.frames["frame1"].print();
document.body.removeChild(frame1);
}, 500);
return false;
}
</script>
В первых двух строках функции javascript я пытаюсь отобразить дату и время:
document.getElementById('<%=lblDateTime.ClientID %>').style.display = "block";
document.getElementById('<%=lblDateTime.ClientID %>').innerHTML = new Date().toLocaleString();
чтобы они могли появиться в распечатке, но как только я нажму на кнопку «Печать», дата и время также появятся на веб-странице. Я не хочу видеть дату и время на своей веб-странице, я просто хочу видеть дату и время на своей распечатке. Я не уверен, что я делаю не так.
Любая помощь будет оценена по достоинству.
Ответ №1:
я провожу здесь эксперимент
function PrintDiv() {
document.getElementById('lblDateTime').style.opacity = "0";
document.getElementById('lblDateTime').innerHTML = new Date().toLocaleString();
var contents2 = document.getElementById("dvContents");
var frame1 = document.createElement('iframe');
var contents = document.getElementById("dvContents").innerHTML;
frame1.name = "frame1";
frame1.style.position = "absolute";
frame1.style.top = "-1000000px";
document.body.appendChild(frame1);
var frameDoc = (frame1.contentWindow) ? frame1.contentWindow : (frame1.contentDocument.document) ? frame1.contentDocument.document : frame1.contentDocument;
frameDoc.document.open();
frameDoc.document.write('<html><head><title>DIV Contents</title>');
frameDoc.document.write('<style>@media print{ #lblDateTime { opacity:1!important} }</style>');
frameDoc.document.write('</head><body>');
frameDoc.document.write(contents);
frameDoc.document.write('</body></html>');
frameDoc.document.close();
setTimeout(function () {
window.frames["frame1"].focus();
window.frames["frame1"].print();
document.body.removeChild(frame1);
}, 500);
return false;
}
<div class="box" id="dvContents">
this is the content, I want to print
<div id="CalculateGrid" style="margin-top: 60px">
<div id="lblDateTime" style="opacity:0;display:inline;" ></div>
</div>
</div>
<button id="print" runat="server" onclick="PrintDiv();">Print</button>
попробуйте использовать свой браузер напрямую из-за невозможности печати здесь, надеюсь, это поможет.
Комментарии:
1. Я ввожу приведенный выше код в приложение, и когда я нажимаю на печать, она ничего не печатает. Я даже не вижу всплывающего окна печати
2. Какое сообщение вы получаете на консоли?
3. можешь попробовать это ? jsfiddle.net/trysetyoutomo/L1pnx2g6/2
4. Я не получаю никакого сообщения на консоли. Я попробовал еще раз. когда я нажимаю на кнопку печати, она просто мерцает, и ничего не происходит. Я пробую это в Google chrome.