Предупреждение javascript завершает остальную часть скрипта

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">alert("Hola amigo")</script>
</head>
<body>

 --I still want to see the following-- >>
<p>Lorem ipsum</p>

</body>
</html>

Почему он завершает все последующее? Я думал, что не было бы, если бы он был внутри <head>. Мне не нравится иметь его внизу (после /html). В чем проблема?


person Community    schedule 31.08.2009    source источник


Ответы (6)


Что вы, вероятно, захотите сделать, так это определить его как функцию, а затем вызвать эту функцию из атрибута onLoad тега body. (Или просто сначала поместите вызов предупреждения в атрибут onLoad.)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function foo() {
    alert("Hola amigo");
}
</script>
</head>
<body onLoad="javascript:foo()">

 --I still want to see the following-- >>
<p>Lorem ipsum</p>

</body>
</html>
person Amber    schedule 31.08.2009
comment
Вам действительно не нужен префикс javascript: в атрибуте onload. - person kangax; 11.10.2009

Это происходит потому, что оповещение выполняется сразу после анализа заголовка, alert блокирует анализ , поэтому содержимое тела еще не загружено.

Выполните оповещение, когда окно будет загружено (событие window.onload):

window.onload = function () {
  alert("Hola amigo");
}
person Christian C. Salvadó    schedule 31.08.2009

alert() блокирует поток пользовательского интерфейса (другими словами - модальный) до тех пор, пока пользователь не подтвердит диалог. Ничего не должно происходить на странице, пока диалоговое окно не будет закрыто.

person Tsvetomir Tsonev    schedule 31.08.2009

Сценарий Java является языком интерпретатора или, другими словами, читает сценарий или выполняет сценарий построчно. Итак, в вашем случае, когда дело доходит до предупреждения [Что такое окно модели: отключите все, что находится за ним, чтобы предотвратить любые действия пользователя]. Он ждет действий пользователя, после чего только он будет читать дальнейший скрипт rty

person rty    schedule 31.08.2009

Я вставил HTML-код на страницу и могу увидеть HTML-код после предупреждения. Какой браузер вы используете?

person Kirtan    schedule 31.08.2009
comment
То же самое случилось со мной. Я предполагаю, что вы поместили комментарий после того, как вставили его сюда, чтобы продемонстрировать ожидаемую функциональность. CMS и TT правы в том, почему ваше оповещение работает некорректно. В будущем при вставке фрагмента вставляйте его как есть. - person Russell; 31.08.2009

попробуй это:

<script type="text/javascript"> //<![CDATA[ //Javascript Alert alert("Put your message here"); //]]> </script>

неважно, куда ты это положишь. Но если вы хотите, чтобы он отображался первым, поместите его вверху вашего скрипта и внизу, чтобы он отображался последним.

person Community    schedule 10.10.2009