无法使用 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总结

Page.ClientScript和Response.Write的用法(c#)