Javascript NET打印iFrame
我有一个ASP.Net应用程序,单击按钮时打印。应用程序使用iFrame进行打印 这是我的标记:Javascript NET打印iFrame,javascript,c#,asp.net,Javascript,C#,Asp.net,我有一个ASP.Net应用程序,单击按钮时打印。应用程序使用iFrame进行打印 这是我的标记: <iframe id="ifPrint" clientidmode="static" runat="server" style="width:100%;height:1px;" /> 该按钮位于名为Search.aspx的页面中。单击“打印”按钮时会发生以下情况: ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?w
<iframe id="ifPrint" clientidmode="static" runat="server" style="width:100%;height:1px;" />
该按钮位于名为Search.aspx
的页面中。单击“打印”按钮时会发生以下情况:
ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?wt=" + sWeightTicket;
ScriptManager.RegisterStartupScript(this, this.GetType(), "PrintWeight", "PrintReport();", true);
如您所见,该按钮用于将源代码设置为PrintWeightTicket.aspx
页面,并打印该页面的内容。但出于某种原因,当我点击“打印”时,它会打印当前页面。我在我的C#代码中设置了一个断点,检查了ifPrint.Src
的值,并将其正确设置到printwortticket
页面。但是由于某种原因,当Javascript中的函数被调用时,src就不会生效
我尝试过的事情:
ifprint.Src=“~/Pages/printwortticket.aspx?wt=“+sWeightTicket代码>
那没有任何作用
Response.Redirect(“~/Pages/printwortticket.aspx?wt=“+sWeightTicket,false”)代码>
在ScriptManager.RegisterStartupScript
行的正下方。如果我那样做,它会起作用的!但是,我的老板告诉我,我们不希望页面重定向到打印页面。我们希望页面停留在搜索页面,打印对话框弹出并打印重定向页面。所以我不得不说出来,现在它不起作用了
Page\u PreRender()
函数调用ScriptManager.RegisterStartupScript
函数。当我这样做的时候,我会在打开主页后立即弹出打印窗口。我不想那样。这实际上甚至不起作用,因为我需要输入重量票ID才能打印任何内容李>
有人知道为什么没有设置iFrame
的src吗
多谢各位
附言:标记中的
ClientIDMode=“Static”
行由于某些原因需要保留。如果有人认为这就是为什么这不起作用的原因,我会研究如何解决这个问题
编辑1:经过一点测试,我发现我当前的代码在Chrome上运行得非常好。但它在IE中不起作用 编辑2:
我的Javascript文件名为
JS_Scripts.JS
。我有一个AJS.JS
和一个AJS\u fx.JS
。当我打开Developer tools并运行HTTP Watch(网络选项卡下的绿色播放按钮,不确定它的名称)时,我注意到我的所有三个javascript文件和一个WebResource.axd?…
文件都得到了(中止)
的结果。尽管如此,它在Chrome中确实有一个200
的结果。IE由于某种原因没有完成脚本的执行。在一周多的时间里,我在键盘上敲了敲键盘,我屈服了,去找我的老板(他聪明得可笑,我有时认为他就是Jon Skeet,在这里使用了假身份)
对于有此问题的任何人:
这就是发生这种情况的原因:
ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?wt=" + sWeightTicket;
此行正确设置了iFrame的源属性。我使iFrame可见,并看到iFrame实际上加载了源代码中提到的链接
但是,下一行是为什么会发生这个问题
ScriptManager.RegisterStartupScript(this, this.GetType(), "PrintWeight", "PrintReport();", true);
这一行调用Javascript中名为PrintReport()
的函数。此函数执行ifPrint.Focus()
和ifPrint.Print()
。但问题是,在调用这两行时,iFrame没有完成加载。因此,iFrame中没有可打印的内容。因此,iFrame一直在打印它所在的页面
以下是修复方法:
不要使用ScriptManager.RegisterStartupScript()
调用PrintReport()
函数,而是使用以下命令:
ifPrint.Attributs("onLoad") = "PrintReport()";
这将确保ifPrint.Print()
函数实际打印iFrame
谢谢。在一周多的时间里,我一直在用键盘敲我的头,后来我屈服了,去找了我的老板(他聪明得可笑,我有时认为他就是乔恩·斯基特,在这里用了一个假身份) 对于有此问题的任何人: 这就是发生这种情况的原因:
ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?wt=" + sWeightTicket;
此行正确设置了iFrame的源属性。我使iFrame可见,并看到iFrame实际上加载了源代码中提到的链接
但是,下一行是为什么会发生这个问题
ScriptManager.RegisterStartupScript(this, this.GetType(), "PrintWeight", "PrintReport();", true);
这一行调用Javascript中名为PrintReport()
的函数。此函数执行ifPrint.Focus()
和ifPrint.Print()
。但问题是,在调用这两行时,iFrame没有完成加载。因此,iFrame中没有可打印的内容。因此,iFrame一直在打印它所在的页面
以下是修复方法:
不要使用ScriptManager.RegisterStartupScript()
调用PrintReport()
函数,而是使用以下命令:
ifPrint.Attributs("onLoad") = "PrintReport()";
这将确保ifPrint.Print()
函数实际打印iFrame
多谢各位