我有一个要通过模式弹出窗口解决的问题。当我从后面的代码中调用弹出窗口时。链接不显示嵌入式pdf文件,仅显示空白的嵌入式黑屏。
但是,当我将embed标签放在模式弹出窗口之外并根据来自后面代码的响应进行显示时,pdf文件显示在屏幕上。所以我知道这条路是对的。我尝试在pdffile.src之后的代码中调用模式弹出窗口,但响应中没有任何变化。
<script>
function ShowPopup() {
$(function () {
$("#displaypdf").dialog({
modal: true,
height : 800,
width : 800,
});
});
return false;
};
</script>
<div id="displaypdf" style="display:none">
<embed id="pdffile" class="pdfsource" runat="server" />
</div>
protected void SelectButton_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup();", true);
string DirPath = Request.QueryString["Dir"];
Button btnButton = sender as Button;
GridViewRow gvRow = (GridViewRow)btnButton.NamingContainer;
Label SelectLink = (Label)gvRow.FindControl("SelectLink");
pdffile.Src = "file:Z:/testdirectory/" + DirPath + "/" + SelectLink.Text;
}
答案 0 :(得分:0)
根据您的代码,我看到您希望浏览器加载本地资源(文件:Z:...),由于存在安全隐患,大多数浏览器均不允许这样做。
要确认是否是问题所在,请尝试更改:
pdffile.Src = "file:Z:/testdirectory/" + DirPath + "/" + SelectLink.Text;
到
pdffile.Src = "http://www.africau.edu/images/default/sample.pdf";
并查看文档是否已加载(如果未加载,请检查浏览器控制台是否存在任何错误)。
我建议您从http端点提供这些文档,例如在IIS中设置一个虚拟文件夹,将其指向文件将位于的本地网络路径(例如Z:/ testdirectory /),然后设置{{1 }}转到此虚拟目录文件路径。