我有这个代码,我试图在.NET平台上运行它,但它无法正常工作。有谁知道我的代码有什么问题?谢谢。我正在使用visual studio 2010和c#编程语言。
private void AlertWithConfirmation()
{
Response.Write("<script language='javascript'>");
Response.Write("var x=window.confirm(\"Are you sure you are ok?\")");
Response.Write("if (x)");
Response.Write("window.alert(\"Good!\")");
Response.Write("else");
Response.Write("window.alert(\"Too bad\")");
Response.Write("</script>");
}
答案 0 :(得分:3)
您的代码产生了这个:
<script language='javascript'>var x=window.confirm("Are you sure you are ok?")if (x)window.alert("Good!")elsewindow.alert("Too bad")</script>
请注意命令之间缺少分隔符的elsewindow
标识符,当然不存在。它会导致错误,因为未定义的值没有alert
方法。
一些改进:
type
属性而不是已弃用的langauge
属性。if
)。confirm
的返回值,而不是使用变量污染全局命名空间。
private void AlertWithConfirmation() {
Response.Write(
"<script type=\"text/javascript\">" +
"if (window.confirm('Are you sure you are ok?')) {" +
"window.alert('Good!');" +
"} else {" +
"window.alert('Too bad');" +
"}" +
"</script>"
);
}
请注意,如果您在常规页面中使用它,它将在doctype标记之前编写脚本标记,这将导致浏览器进入怪异模式,这很可能会破坏您的布局。如果要将脚本添加到常规页面,则应在可以添加脚本的页面上添加PlaceHolder
,或使用ClientScriptManager.RegisterStartupScript
方法。
答案 1 :(得分:1)
确保Response.Write的结果如下所示:
<script type="text/javascript">
var x=window.confirm('Are you sure you are ok?');
if (x) {
window.alert('Good!');
} else {
window.alert('Too bad');
}
</script>
答案 2 :(得分:1)
aspx页面生成的HTML在渲染阶段呈现,该阶段处于页面生命周期的末尾。
因此,如果您在页面生命周期的早期调用Response.Write
,它将在第一个标记之前的页面开头输出 - 几乎肯定不是您想要的。
如果您检查生成的HTML(在浏览器中查看源代码),您会看到这一点。
通常,如果要渲染一些javascript,则应使用其他一些技巧,例如在页面中的适当位置设置Literal控件的Text属性。
答案 3 :(得分:1)
你已经在24小时内问了两个类似的问题。你必须有耐心。