我有一个打印div内容的功能。让我分享一下我的aspx标记。
<div>
<div id="printarea" runat="server">
</div>
<asp:Button ID="btnPrint" runat="server" Text="Print Div" OnClick="btnPrint_Click" />
在OnClick事件中,innerhtml设置为div printarea。代码是:
protected void btnPrint_Click(object sender, EventArgs e)
{
string divText = GenerateInPatientBill();// "content you want to print";
printarea.InnerHtml = divText;
ScriptManager.RegisterStartupScript(this, Page.GetType(), "script", "PrintDiv(" + printarea.ClientID + ");", true);
}
我需要将printarea div的clientid传递给javascript函数并打印出来。使用的javascript函数是
function PrintDiv(printarea1) {
alert($("#" + printarea1 + ""));
var printContent = $("#" + printarea1 + "").html();
alert(printContent);
var popupWin = window.open('', '_blank', 'width=300,height=400,location=no,left=200px');
popupWin.document.open();
popupWin.document.write(printContent);
popupWin.document.close();
popupWin.focus();
popupWin.print();
popupWin.close();
}
我在第2行收到javascript语法错误。请帮我解决此问题。
答案 0 :(得分:1)
请尝试以下代码。
function printDiv(DivIdToPrint)
{
var divToPrint= document.getElementById('DivIdToPrint');
var newWin=window.open('','Print-Window','width=100,height=100');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}
此JavaScript将打开一个包含div内容的新窗口,将打印它然后关闭该窗口。最后一行,这是必须在那里设置超时,否则在IE窗口中将在打印之前关闭。
否则,您可以使用jQuery plugin
答案 1 :(得分:0)
printContent在新打开的窗口中不可用,因此您收到此错误。为了克服这个问题,您应该简单地将div内容或标记传递给新打开的窗口,然后打印