Как делает местоположение тега script во влиянии страницы функция JavaScript, которая определяется в нем?

'{0[n]}...' является строкой, которая интерпретируется методом format(). Синтаксический анализатор Python не заботится о содержимом этой строки, и format может использовать любую нотацию, независимо от того, что допустимо в Python, а что нет.

O[n] это не строка, это выражение Python. Когда Python анализирует его, он пытается преобразовать n в переменную, которая, в вашем случае, не существует. Ваша попытка сработает, если вы выполните n='n' перед поиском.

43
задан Peter Mortensen 31 December 2010 в 16:21
поделиться

7 ответов

Сообщение людям добавить <SCRIPT> только в голове звуки как разумная вещь сделать, но поскольку другие сказали, что существует много причин, почему это не рекомендуется или даже практичное - главным образом скорость и способ, которым страницы HTML сгенерированы динамично.

Это - то, что спецификация HTML 4 говорит :

элемент СЦЕНАРИЯ помещает сценарий в рамках документа. Этот элемент может появиться любое количество раз в ГОЛОВЕ или ТЕЛЕ документа HTML.

И некоторый демонстрационный HTML. Не делает это выглядит симпатичным все отформатированные здесь :)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>A document with SCRIPT</TITLE>
<META http-equiv="Content-Script-Type" content="text/tcl">
<SCRIPT type="text/vbscript" src="http://someplace.com/progs/vbcalc">
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
...some JavaScript...
</SCRIPT>
</BODY>
</HTML>

И что-то для нетерпеливого ожидания в HTML 5 :

Новый асинхронный атрибут в <SCRIPT>:

Примечание: существуют пути [так], сценарий может быть выполнен:

асинхронный атрибут "верен": сценарий будет выполняться asynchrously с остальной частью страницы, таким образом, сценарий будет выполняться, в то время как страница продолжает парсинг.

асинхронный атрибут является "ложью", но задержать атрибут "верен": сценарий будет выполняться, когда страница будет закончена с парсингом.

26
ответ дан Simon_Weaver 26 November 2019 в 23:00
поделиться

Нормальные правила игры все еще стоят; не используйте материал, прежде чем он будет определен. :)

кроме того, обратите внимание, что 'помещенный все в нижней части' совет не только правило в книге - в некоторых случаях это не может быть выполнимо, и в других случаях может иметь больше смысла помещать сценарий в другом месте.

главная причина для помещения сценария в нижней части документа для производительности, сценарии, в отличие от других Запросов HTTP, не загружаются параллельно, означая, что они замедлят загрузку остальной части Вашей страницы. Другая причина помещения сценариев внизу так, Вы не должны использовать никого 'DOM готовые' функции. Так как тег script ниже всех элементов, DOM будет готов к управлению!

РЕДАКТИРОВАНИЕ: Чтение это: http://developer.yahoo.com/performance/rules.html#js_bottom

19
ответ дан James 26 November 2019 в 23:00
поделиться

Это не делает. Большая часть платформы программирования рассеивает сценарии все всюду по странице. Я только редко видел проблемы из-за этого (и только от более старых браузеров).

2
ответ дан TheSmurf 26 November 2019 в 23:00
поделиться

Одним из аспектов размещения является производительность. См. эта прекрасная статья в рамках обсуждения YSlow для того, почему это иногда рекомендовало поместить их в нижней части документа.

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

9
ответ дан Alan 26 November 2019 в 23:00
поделиться

Если Ваш сценарий обращается к идентификатору на странице, и страница не была представлена (т.е. сценарий перед HTML, или Ваш сценарий выполняется с onload, скорее затем DOM готов), можно также получить ошибку.

2
ответ дан Diodeus - James MacFarlane 26 November 2019 в 23:00
поделиться

Если у Вас есть встроенный сценарий (вне функций) расположенный перед функциями, он может звонить, можно получить ошибку, потому что они еще не могут быть не доступными. Не поговорка его всегда гласит произойти, просто что он май в зависимости от типа браузера или версии.

1
ответ дан Otávio Décio 26 November 2019 в 23:00
поделиться

Правила обзора данных JavaScript подобны жемчугу - можно вызвать любую функцию в токе или любой более высокий уровень объема. Единственное ограничение - то, что функция должна быть определена в то время, когда Вы называете ее. Положение в источнике не важно - только положение в вопросах времени.

необходимо постараться не помещать сценарии в <head>, если это возможно, поскольку это замедляет отображение страницы (см. ссылку отправленный Alan).

1
ответ дан 26 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: