предупреждение javascript не работает - PullRequest
4 голосов
/ 17 августа 2011

У меня есть этот код, и я пытаюсь запустить его на платформе .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>");
            }

Ответы [ 4 ]

3 голосов
/ 17 августа 2011

Ваш код производит это:

<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.

1 голос
/ 17 августа 2011

HTML-код, сгенерированный страницей aspx, отображается в фазе рендеринга, которая находится в конце жизненного цикла страницы.

Поэтому, если вы вызовете Response.Write ранее в жизненном цикле страницы, он будет выводиться в начале страницы перед первым тегом - почти наверняка не так, как вы хотите.

Если вы проверите сгенерированный HTML (Просмотреть исходный код в браузере), вы увидите это.

В общем, если вы хотите визуализировать некоторый javascript, вам следует использовать другую технику, например, установить свойство Text элемента управления Literal в соответствующем месте на странице.

1 голос
/ 17 августа 2011

Вы уже задавали два похожих вопроса в течение 24 часов.Вам нужно немного терпения.

как использовать оповещение JavaScript, чтобы пользователь мог выбрать

Проблема оповещения Javascript

1 голос
/ 17 августа 2011

Убедитесь, что результат 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...