我正在开发一个asp.net网络应用程序,其中我在jquery对话框中显示pdf,pdf在iframe中。我的代码是
if (int.Parse(Request.QueryString["option"].ToString()) == 0)
{
showPDF(DocumentId, perId);
mediaRep.MediaViewLog(memberId, DocumentId);
litScript.Text = "<script>$(function(){$( '#dialog' ).dialog( 'destroy');$(\"#showPdf\").dialog({height: \"auto\",width:\"auto\",modal: true ,buttons:{OK: function () {$(this).dialog(\"close\");window.location=\"PdfSearch.aspx\"}},close:function(){closeDialogPer(\"" + perId + "\");window.location=\"PdfSSearch.aspx\"}});});</script>";
}
publicvoid showPDF(Guid DocumentId, int perId)
{
litObj.Text = "<iframe type=\"application/pdf\" class=\"noprint pdfPreviewSettings\" src=\"/Search/GetPdfFile.ashx?MediaId=" + DocumentId + "&FileType=Document" + "&PerId=" + perId +
"\" onclick=\"disableRightClick();\" width=\"1150\" height=\"750\" ><strong class=\"pdfError \">Please contact your system administrator for installation of adobe acrobat reader.</strong></iframe>";
}
问题是当pdf在对话框中显示时,iframe中的web处理程序正在调用两次而没有对话框处理程序正在调用一次。通过使用jquery对话框调用处理程序变为double的原因是什么,以及如何修复它。
答案 0 :(得分:1)
dialog
调用2次请求的原因是iframe已在页面上且已加载一次,但dialog
调用会从其当前父元素中删除iframe,然后将其附加到某些其他元素(如页面上的div中心),这会导致iframe重新加载其内容,您无法避免此问题。
解决方法是不在html标记中设置iframe src,然后在iframe上调用对话框函数,然后将iframe src设置为url。
$("#showPdf").dialog(...);
$("#showPdf").attr("src","<here goes the url to be loaded>");