Ваш код производит это:
<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>"
);
}
Обратите внимание, что если вы используете это на обычной странице, он будет писать тег script перед тегом doctype, что приведет к переходу браузера в режим quirks, что, скорее всего, испортит ваш макет. Если вы хотите добавить сценарии на обычную страницу, вы должны поместить PlaceHolder
на страницу, где вы можете добавить его, или использовать метод ClientScriptManager.RegisterStartupScript
.