C# 如何从web浏览器的打印弹出窗口中知道单击(确定或取消)事件
在我的应用程序中,我通过一个弹出窗口打印一些数据。加载弹出窗口时,将提示用户进行打印或取消。我想知道单击了哪个按钮(打印或取消),以便我可以根据单击的按钮采取一些操作。下面给出了代码和屏幕截图C# 如何从web浏览器的打印弹出窗口中知道单击(确定或取消)事件,c#,javascript,C#,Javascript,在我的应用程序中,我通过一个弹出窗口打印一些数据。加载弹出窗口时,将提示用户进行打印或取消。我想知道单击了哪个按钮(打印或取消),以便我可以根据单击的按钮采取一些操作。下面给出了代码和屏幕截图 public void Print(int Id) { StringBuilder sb = BadgeHelper.preparePrintableString(Id); string printWindowFunc = "function
public void Print(int Id)
{
StringBuilder sb = BadgeHelper.preparePrintableString(Id);
string printWindowFunc = "function printWindow() {\n" +
"var z = window.print();\n alert('Return: ' + z);\n" +
"checkDocumentState();\n" +
"}";
string checkDocumentStateFunc = "function checkDocumentState() {\n" +
"if (document.readyState == 'complete') {\n" +
"window.close();\n" +
"}\n" +
"else {\n alert('Else');\n" +
"setTimeout('checkDocumentState()', 2000);\n" +
"}\n"+
"}\n";
string startingHTMLCode = "<html>\n" +
"<head>\n" +
"<script type='text/javascript'>\n " +
checkDocumentStateFunc +
"\n" +
printWindowFunc +
"</script>\n " +
"</head>\n" +
"<body onload='printWindow();'>\n";
sb.Insert(0, startingHTMLCode);
sb.Append("\n</body>\n</html>");
Response.Write(sb.ToString());
}
公共作废打印(int-Id)
{
StringBuilder sb=BadgeHelper.preparePrintableString(Id);
字符串printWindowFunc=“函数printWindow(){\n”+
“var z=window.print();\n警报('Return:'+z);\n”+
“checkDocumentState();\n”+
"}";
字符串checkDocumentStateFunc=“函数checkDocumentState(){\n”+
“如果(document.readyState=='complete'){\n”+
“window.close();\n”+
“}\n”+
“else{\n警报('else');\n”+
setTimeout('checkDocumentState()',2000);\n+
“}\n”+
“}\n”;
字符串startingHTMLCode=“\n”+
“\n”+
“\n”+
checkDocumentStateFunc+
“\n”+
printWindowFunc+
“\n”+
“\n”+
“\n”;
sb.插入(0,开始HTMLCODE);
sb.追加(“\n\n”);
写(某人写的东西);
}
检查这个:好问题,尽管我认为这是1)从“公平”js不可能2)不应该真的这样做(这是我个人对过于智能和活跃的界面的憎恨)。
onbeforeprint/onafterprint
不允许检查打印状态,以及返回window.print
的结果。作为旁注,你不应该像这样把javascript放在C代码中,这是一种反模式。这个问题与C完全无关。