无法使用 Response.Write 或 ClientScript.RegisterStartupScript 从代码后面打开新窗口
Posted
技术标签:
【中文标题】无法使用 Response.Write 或 ClientScript.RegisterStartupScript 从代码后面打开新窗口【英文标题】:unable to open new window from code behind with Response.Write or ClientScript.RegisterStartupScript 【发布时间】:2020-05-07 21:25:55 【问题描述】:我有以下代码:
我创建脚本:
Dim redirect As String = "<script type='text/javascript'>window.open('~/PrintOrder.aspx?OrderNumber=" & Me.ViewState("OrderNumber") & "', '_blank');</script>"
我试过了:
ClientScript.RegisterStartupScript(Me.GetType, "openWindow", redirect)
我也试过了:
Response.Write(redirect)
断点确认字符串redirect
已正确创建。浏览器不会阻止弹出窗口,但绝对没有任何反应。我错过了什么?
【问题讨论】:
当您在浏览器中查看页面源代码时,是否有您期望的代码?浏览器的开发控制台有错误吗? 没有错误,正在写入代码的页面在写入 javascript 后会刷新。嗯,提出了一个问题,在执行代码之前是否刷新了页面。我得调查一下。感谢您的提示。大声笑.... @PrescottChartier JavaScript 不处理~/PrintOrder.aspx
中的~
。
@Andrew Morton 我不这么认为,我只是在抓稻草。我正在调查我在上面的评论中提到的刷新问题。我现在相信在代码执行之前页面可能已经刷新了。
@PrescottChartier 什么事件旨在打开窗口,例如用户点击按钮了吗?
【参考方案1】:
使用此代码:
Dim redirect As String = "<script type='text/javascript'> window.open('PrintOrder.aspx?OrderNumber=" & Me.ViewState("OrderNumber") & "', '', 'left=100,top=100,height=350px,width=400px,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes', false); </script>";
ClientScript.RegisterStartupScript(Me.GetType, "openWindow", redirect);
【讨论】:
我遇到的问题是在执行代码之前页面正在刷新。这不是我使用的代码行。当我停止刷新页面时,窗口按预期打开。不过感谢您的建议。以上是关于无法使用 Response.Write 或 ClientScript.RegisterStartupScript 从代码后面打开新窗口的主要内容,如果未能解决你的问题,请参考以下文章
未能分析从服务器收到的消息,.cs文件里面用response.write输出js弹框出错,用了局部跟新
asp.net C# mvc2中controller的无法获取参数
spring mvc 是不是有 response.write 可以直接输出到浏览器?
初入nodejs -- response.write对象时报错
Response.Write RegisterClientScriptBlock和RegisterStartupScript总结