Список вопросов по HTML


4.11. Есть ли в JS функция, которая


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

Но есть у них и недостатки - они плохо поддерживаются старыми бродилками, кроме того, при вызове функции из внешнего скрипта мы не можем быть уверены в том, что этот скрипт загрузился - в противном случае будет выдано сообщение об ошибке. Особенно плачевно заканчивается использование лентяями внешних скриптов вместо SSI для вывода информации в документ (document.write).

Поэтому грамотный метод использования внешних скриптов такой. В <head> документа, выше всех остальных внешних и внутренних скриптов пишется:

<script language="JavaScript" type="text/javascript"><!-- var jsLoaded=false; //--></script>

Внешний скрипт вставляется так:

<script language="JavaScript1.2" src="myscript.js" type="text/javascript"></script>

Обратите внимание на параметр language - там стоит JavaScript1.2 вместо простого JavaScript для того, чтобы старые бродилки не пытались загрузить то, что они все равно не поймут.

В файле myscript.js последней строчкой должно стоять:

jsLoaded=true;

Затем при необходимости использования функций из внешнего скрипта мы поступаем так:

а) В блоке JavaScript:

<script language="JavaScript" type="text/javascript"><!-- ... // тили-тили // трали-вали if (jsLoaded) {     // это дело мне по силе     // откажусь теперь едва ли } else {     // это мы не проходили     // это нам не задавали } ... //--></script>

б) При вызове функции по событию в теге HTML:

<a href="page.html" onClick="return (jsLoaded)?externalFunction(...):true;">




- Начало -  - Назад -  - Вперед -