Javascript 响应后关闭窗口。结束()?
我正在使用下面的代码下载Excel文件。运行Javascript 响应后关闭窗口。结束()?,javascript,asp.net,vb.net,Javascript,Asp.net,Vb.net,我正在使用下面的代码下载Excel文件。运行Response.End()调用后,我想关闭窗口。然而,这并没有发生。请看下面的代码 'Write it back to the client Dim filename As String = "FullExtract_" & Now.Year.ToString & Now.Month.ToString & Now.Day.ToString & ".xlsx" Response.ContentType =
Response.End()
调用后,我想关闭窗口。然而,这并没有发生。请看下面的代码
'Write it back to the client
Dim filename As String = "FullExtract_" & Now.Year.ToString & Now.Month.ToString & Now.Day.ToString & ".xlsx"
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment; filename=" & filename)
Response.BinaryWrite(pck.GetAsByteArray())
Response.End()
'cursor not reaching to below code
Page.ClientScript.RegisterStartupScript(Me.GetType(), "closedownload", "JavaScript:window.close(); return false;")
如何关闭窗口?不要呼叫响应。结束。这会引发线程异常,这会导致各种各样的不愉快的事情。此外,此异常正是阻止您在响应.End not激发后使用Page.ClientScript的原因。因此,只需删除响应。结束。它不再需要了,是旧的经典ASP时代的延续 编辑:你不能像那样关闭窗口;发送文件下载时,应在用户操作系统上打开文件保存提示,文件将下载。我认为,生成的html RegisterStartupScript最终将作为文件下载的一部分。您可能应该让触发下载的按钮或链接使用target=“\u blank”或通过javascript打开一个新窗口的页面,该窗口将自动关闭,甚至不会打开,具体取决于浏览器 调用
Response.End()
会停止页面的执行,因此不会处理注册脚本的行。但是,我认为在将文件内容发送到浏览器后,应该调用Response.End()
,以便浏览器正确接收文件
为了关闭窗口,但允许下载文件,您可以尝试使用java脚本显示弹出窗口,然后关闭它,同时保持其父页面打开
这里有一些解决类似问题的建议:
- 首先,我认为您的关闭窗口脚本应该是这样的↓
Page.ClientScript.RegisterStartupScript(this.GetType(), "closedownload", "<script language='javascript'>window.opener=null;window.close();</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(),“closedownload”,“window.opener=null;window.close();”;
然后,我想为什么在response.end()之后不能关闭窗口是关于
从上面的文档中,我们可以了解订单
页面加载->控制事件->页面渲染
1,您注册的javascript将在呈现页面时执行
2,当您在事件中执行Response.End()(这将绝对停止页面生命周期执行)时,将永远不会触发页面呈现事件
3,这就是为什么响应后无法关闭窗口。End()。IMHO我也有类似的问题,请检查我下面的答案,我希望它能帮助您
var popupWindow = window.open("endpoint","","setting");
var att = document.createAttribute("onblure"); // Create a "onblure" attribute
att.value = "window.close()"; // Set the value of the class attribute
popupWindow.setAttributeNode(att);
这将允许在下载窗口出现时关闭窗口
注:
端点:是您的新窗口端点
设置:是您的窗口设置,例如宽度、高度、顶部、左侧。。etc当您调用
Response.End
时,它会停止页面的执行,因此不会进一步处理页面。请看以下内容:。是否有关闭窗口的建议。我删除了Response.End()
,控件指向“Page.ClientScript.RegisterStartupScript”,但窗口未关闭。看到代码不工作了吗