Java. Листинги

Server for Information Technologies
Сервер поддерживается
Центром Информационных Технологий
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Листинги

Листинг 1.

public final class Class extends Object
    implements Serializable {
    // Информация о классе или интерфейсе

    public native Class getSuperclass ();
    // Возвращает класс-предшественник данного класса

    public native Class [] getInterfaces ();
    // Возвращает интерфейсы, реализуемые классом

    public Field [] getFields ()
        throws SecurityException;
    // Возвращает public-поля данного класса, в том числе
    // унаследованные. Возбуждает исключительную ситуацию,
    //  если доступ к этой информации запрещен политикой
    // безопасности.

    public Constructor [] getConstructors ()
        throws SecurityException;
    // Возвращает public-конструкторы данного класса.
    // Возбуждает исключительную ситуацию, если доступ
    // к этой информации запрещен политикой безопасности.

    public Method [] getMethods ()
        throws SecurityException;
    // Возвращает public-методы данного класса, в том числе
    // унаследованные. Возбуждает исключительную ситуацию,
    //  если доступ к этой информации запрещен политикой
    // безопасности.

    public Method getMethod (String name, Class
                        parameterTypes [])
        throws NoSuchMethodException,
                SecurityException;
    // Возвращает public-метод с заданными именем и типами
    // параметров. Возбуждает исключительную ситуацию,
    // если такого метода нет, или если доступ к этой
    // информации запрещен политикой безопасности

    public Method [] getDeclaredMethods ()
        throws SecurityException;
    // Возвращает все методы, продекларированные в данном
    // классе. Возбуждает исключительную ситуацию, если
    // доступ к этой информации запрещен политикой
    // безопасности
    . . .
}

Листинг 2.

public final class Method
    extends Object implements Member {
// Информация о методе класса или интерфейса

    public Class getDeclaringClass ();
    // Возвращает класс или интерфейс,
    // содержащий декларацию данного метода

    public String getName ();
    // Возвращает имя метода в виде цепочки символов

    public native int getModifiers ();
    // Возвращает модификаторы (public, ...),
    // использованные при описании метода

    public Class [] getParameterTypes ();
    // Возвращает типы формальных параметров метода

    public Class getReturnType ();
    // Возвращает тип результата метода

    public Class [] getExceptionTypes ();
    // Возвращает исключительные ситуации,
    // возбуждаемые данным методом

    public String toString ();
    // Возвращает цепочку символов, описывающую метод

    public native Object invoke (Object obj,
                           Object args [])
        throws	IllegalAccessException,
                IllegalArgumentException,
                InvocationTargetException,
                NullPointerException;
    // Применяет данный метод к объекту obj
    // с заданным списком параметров
    . . .
}

Листинг 3.

public class BeanDescriptor
    extends FeatureDescriptor {
    // Описатель компонента объектной среды

    public BeanDescriptor (Class beanClass);
    // Создает описатель по классу компонента

    public Class getBeanClass ();
    // Возвращает класс компонента

    public Class getCustomizerClass ();
    // Возвращает класс-настройщик компонента
    // (см. раздел "Настройка свойств")

    . . .
}

Листинг 4.

public interface BeanInfo {
// Интерфейс, который нужно реализовать,
// чтобы явным образом афишировать характеристики
// компонента объектной среды

    public abstract BeanDescriptor
        getBeanDescriptor ();
    // Возвращает описатель компонента

    public abstract EventSetDescriptor []
        getEventSetDescriptors ();
    // Возвращает описатели событий,
    // возбуждаемых компонентом

    public abstract PropertyDescriptor []
        getPropertyDescriptors ();
    // Возвращает описатели афишируемых
    // свойств компонента

    public abstract MethodDescriptor []
        getMethodDescriptors ();
    // Возвращает описатели афишируемых
    // методов компонента

    public abstract Image getIcon (int iconKind);
    // Возвращает иконку, ассоциированную с компонентом

    . . .
}

Листинг 5.

public class Introspector extends Object {
// Выяснение характеристик компонента объектной среды

    public static BeanInfo
        getBeanInfo (Class beanClass)
    throws IntrospectionException;
    // Выясняет афишируемые характеристики компонента.
    // При нештатном ходе процесса интроспекции
    // возбуждает исключительную ситуацию

    public static String [] getBeanInfoSearchPath ();
    // Возвращает массив пакетов,
    // в которых будут разыскиваться классы BeanInfo

    public static void
        setBeanInfoSearchPath (String path []);
    // Устанавливает массив пакетов,
    // в которых будут разыскиваться классы BeanInfo

    . . .
}

Листинг 6.

interface KeyPressedListener
    extends java.util.EventListener {

    void KeyPressed (KeyPressedEvent kpe);
    // Метод, вызываемый в подписчиках
    // при распространении события

}

Листинг 7.

    implements Serializable {

    protected transient Object source;
    // Поле событийного объекта, хранящее информацию
    // об источнике. Слово transient означает, что поле
    // является временным и при сохранении объекта
    // в долговременную память не записывается

    public EventObject (Object source);
    public Object getSource ();
    public String toString ();
    // Возвращает представление событийного объекта
    // в виде цепочки символов
}

Листинг 8.

public class KeyPressedEvent
    extends java.util.EventObject {

        protected transient int KeyCode;

        KeyPressedEvent (java.awt.Component source,
                        int Key) {
            super (source);
            KeyCode = Key;
        }

        public int getKeyPressed () {
            return KeyCode;
        }
}

Листинг 9.

public abstract class KeyPressedEventSource {

    private Vector listeners = new Vector ();
    // Массив для хранения набора подписчиков

    public synchronized void
      addKeyPressedListener (KeyPressedListener kpl) {
    // Зарегистрировать подписчика

        listeners.addElement (kpl);
    }

    public synchronized void
      removeKeyPressedListener(KeyPressedListener kpl) {
    // Аннулировать регистрацию

        listeners.removeElement (kpl);
    }

    protected fireKeyPressed (int Key) {
    // Распространение события (оповещение подписчиков)

        Vector l;
        KeyPressedEvent kpe =
            new KeyPressedEvent (this, Key);

    // Создадим локальную копию набора подписчиков
    // на момент возникновения события.
    // В процессе распространения события набор подписчиков
     // (но не локальная копия!) может изменяться
        synchronized (this)
            {l = (Vector) listeners.clone ();}

    // Оповестим подписчиков о наступлении события

        for (int i = 0; i < l.size(); i++) {
            ((KeyPressedListener)
                l.elementAt(i)).KeyPressed (kpe);
        }
    }
}

Листинг 10.

public class MyListener
    implements KeyPressedListener {

      public void KeyPressed (KeyPressedEvent kpe) {
      . . .
    }

}

Шаблоны

public <тип_свойства> get<имя_свойства> (int i);
public void set<имя_свойства> (int i, <тип_свойства> p);
public <тип_свойства> [] get<имя_свойства> ();
public void set<имя_свойства> (<тип_свойства> p []);

Примеры

Листинг 11.

public Color getPalette (int i);
public void setPalette (int i, Color c);
public Color [] getPalette ();
public void setPalette (Color c []);

Листинг 12.

public class PropertyChangeEvent
    extends EventObject {

    public PropertyChangeEvent (Object source,
                String propertyName, Object oldValue,
                Object newValue);
    // Конструктор. Создает событийный объект из источника
    // события, имени изменяемого свойства,
    // старого и нового значений

    public String getPropertyName ();
    // Возвращает имя изменяемого свойства

    public Object getNewValue ();
    // Возвращает новое значение свойства

public Object getOldValue ();
// Возвращает прежнее значение свойства

. . .
}

Листинг 13.

public interface PropertyChangeListener
    extends EventListener {
        public abstract void
          propertyChange (PropertyChangeEvent pce);
        // Метод, вызываемый после изменения
        // связанного свойства

}

Листинг 14.

public class PropertyChangeSupport
    extends Object implements Serializable {
// Вспомогательный класс для обслуживания
// связанных свойств

    public PropertyChangeSupport (Object sourceBean);
    // Конструктор

    public synchronized void
    addPropertyChangeListener
        (PropertyChangeListener pcl);
    // Регистрация подписчиков

    public synchronized void
        removePropertyChangeListener
            (PropertyChangeListener pcl);
    // Аннулирование регистрации

    public void firePropertyChange
        (String propertyName, Object oldValue,
         Object newValue);
    // Конструирование событийного объекта и
    // распространение события. Если новое и старое значения
    // совпадают, никаких действий не предпринимается

}

Листинг 15.

public interface PropertyEditor {

    public abstract void setValue (Object value);
    // Устанавливает редактируемый объект (свойство)

    public abstract Object getValue ();
    // Возвращает текущее значение свойства

    public abstract boolean isPaintable ();
    // Истина, если свойство имеет графическое представление
    // (реализован метод paintValue)

    public abstract void paintValue (Graphics gfx,
                            Rectangle box);
    // Отрисовывает графическое представление свойства
    // в заданной области экрана

    public abstract String getAsText ();
    // Возвращает текстовой представление значения
    // свойства, доступное для редактирования

    public abstract void setAsText (String text)
        throws IllegalArgumentException;
    // Устанавливает значение свойства
    // по текстовому представлению

    public abstract boolean supportsCustomEditor ();
    // Истина, если поддерживается специализированный
    // редактор свойства

    public abstract Component getCustomEditor ();
    // Возвращает специализированный редактор свойства,
    // которым, вероятно,  воспользуется окружение

    public abstract void addPropertyChangeListener
        (PropertyChangeListener pcl);
    // Регистрация подписчиков, информируемых
    // об изменении значения свойства

    public abstract void removePropertyChangeListener
            (PropertyChangeListener pcl);
    // Аннулирование регистрации

    . . .
}

Листинг 16.

public class PropertyEditorManager extends Object {

 public static void registerEditor (Class targetType,
                        Class editorClass);
  // Регистрация редактора для типа targetType

 public static PropertyEditor findEditor
    (Class targetType);
 // Возвращает редактор для типа targetType

    . . .
}

Листинг 17.

public interface Customizer {

    public abstract void setObject (Object bean);
    // Устанавливает настраиваемый объект

    public abstract void addPropertyChangeListener
        (PropertyChangeListener pcl);
    // Настройщик должен возбуждать событие
    // propertyChange при изменении значения свойства

    public abstract void removePropertyChangeListener
        (PropertyChangeListener pcl);
}

Листинг 18.

public interface Serializable {

    private void writeObject
        (java.io.ObjectOutputStream out)
            throws IOException;
    // Запись объекта в долговременную память

    private void readObject
        (java.io.ObjectInputStream in)
            throws IOException,
                  ClassNotFoundException;
    // Чтение объекта из долговременной памяти - метод,
    // обратный writeObject ()

}

Листинг 19.

public interface Externalizable
    extends Serializable {

    public abstract void writeExternal
      (ObjectOutput out) throws IOException;
    // Сохранение объекта в нестандартном формате

    public abstract void readExternal
      (ObjectInput in) 	throws IOException,
                    ClassNotFoundException;
    // Чтение нестандартно сохраненного объекта -
    // метод, обратный writeExternal ()

}

Листинг 20.

public class Beans extends Object {

    public static Object instantiate
     (ClassLoader cls, String beanName)
          throws IOException, ClassNotFoundException;
    // Создание экземпляра компонента

    public static boolean isDesignTime ();
    // Истина, если работа идет в инструментальном
    // окружении

    public static boolean isGuiAvailable ();
    // Истина, если работа идет в графическом окружении

. . .

}

Листинг 21.

public interface Collection {
    public abstract boolean add (Object o)
        throws ...;
    // Включает объект в набор. Возвращает "ложь",
    // если объект там уже был

    public abstract void addAll (Collection c)
        throws ...;
    // Включает все элементы одного набора в другой

    public abstract boolean remove (Object o)
        throws ...;
    // Удаляет объект из набора

    public abstract void clear () throws ...;
    // Удаляет все элементы из набора

    public abstract boolean contains (Object o);
    // Проверяет, входит ли данный объект в набор

    public abstract Iterator iterator ();
    // Возвращает итератор набора, позволяющий
    // перебирать элементы

    public abstract Object [] toArray ();
    // Преобразует набор в массив

    . . .
}

Листинг 22.

public interface BeanContextChild
    extends BeanContextListener {

    void setBeanContext (BeanContext bc)
        throws PropertyVetoException;
    // Ассоциирует контейнер с компонентом.
    // Если компонент считает, что новый контейнер ему
    // не подходит, он возбуждает исключительную ситуацию.
    // Интерфейс BeanContext описывается ниже, на листинге 26

    BeanContext getBeanContext ();
    // Опрашивает ассоциацию

    . . .
}

Листинг 23.

public interface BeanContextListener
    extends java.util.EventListener {

    void beanContextChanged (BeanContextEvent bce);
    // Метод, вызываемый в объектах-подписчиках
    // при изменениях контейнера

}

Листинг 24.

public abstract class BeanContextEvent
    extends java.util.EventObject {

    public BeanContext getBeanContext ();
    // Возвращает контейнер, распространяющий событие

    public synchronized void setPropagatedFrom
        (BeanContext bc);
    // Устанавливает первоисточник события

    public synchronized BeanContext
        getPropagatedFrom ();
    // Возвращает первоисточник события

    public synchronized boolean isPropagated ();
    // Истина, если событие является вторичным

}

Листинг 25.

public abstract class BeanContextMembershipEvent
    extends BeanContextEvent {

    public boolean isDeltaMember (Object o);
    // Истина, если заданный компонент был добавлен
    // или удален

    public Object [] getDeltas ();
    // Возвращает добавленные или удаленные компоненты

    public boolean isChildrenAddedEvent ();
    // Истина, если имело место добавление компонентов

    public boolean isChildrenRemovedEvent ();
    // Истина, если имело место удаление компонентов

}

Листинг 26.

public interface BeanContext
    extends java.beans.BeanContextChild,
        java.util.Collection {

    Object instantiateChild (String beanName)
        throws IOException, ClassNotFoundException;
    // Создает новый экземпляр компонента, заданного
    // именем, и включает его в себя как в контейнер

    Object hasService (Class serviceClass,
                 BeanContextChild requestor);
    // Истина, если контейнер предоставляет
    // запрашиваемый сервис

    Object getService (Class serviceClass,
                BeanContextChild requestor);
    // Возвращает сервисный объект запрашиваемого класса

    public java.net.URL getResource (String name,
                BeanContextChild requestor);
    // Возвращает универсальный локатор ресурса
    // с заданным именем

    void addBeanContextListener
        (BeanContextListener bcl);

    void removeBeanContextListener
        (BeanContextListener bcl);
    . . .
}

Листинг 27.

public class InfoBus extends Object {

    public static synchronized InfoBus
        open (Component c);
    // Получение ссылки на экземпляр шины.
    // Аргумент используется для определения контекста
    // (контейнера), для которого подходящая шина, возможно,
    // уже существует. При необходимости создается
    // новый экземпляр шины

    public static synchronized InfoBus
        open (String busName);
    // Получение ссылки на экземпляр шины. Аргумент задает
    // желательное имя экземпляра. Обычно используется
    // не-компонентами (например, инструментальным
    // окружением)

    public synchronized void join (InfoBusMember member)
        throws  PropertyVetoException,
                InfoBusMembershipException;
    // Включение заданного компонента в число членов шины.
    // Компонент, желающий подключиться к шине, должен
    // реализовать интерфейс InfoBusMember. Экземпляр
    // шины устанавливается в качестве значения свойства
    // InfoBus нового члена

    public void leave (InfoBusMember member)
        throws PropertyVetoException;
    // Выведение компонента из числа членов шины.
    // Обычно вызывается самим компонентом

    public void propertyChange
        (PropertyChangeEvent event);
    // Обработка события, вызванного изменением значения
    // свойства InfoBus у какого-либо члена шины. Служит
    // для обеспечения целостности связей между шинами и
    // их членами

    public void addDataProducer
        (InfoBusDataProducer producer);
    public void addDataConsumer
        (InfoBusDataConsumer consumer);
    // Обслуживание подписки на события в экземпляре шины,
    // запрашиваемой поставщиками и/или потребителями
    // элементов данных

    public void fireItemAvailable (String dataItemName,
        InfoBusDataProducer producer);
    // Распространение среди потребителей события,
    // состоящего в том, что на шине появился элемент
    // данных с указанным именем, помещенный заданным
    // поставщиком

    public DataItem findDataItem (String dataItemName,
        InfoBusDataConsumer consumer);
    // Распространение среди поставщиков события,
    // состоящего в том, что заданный потребитель
    // нуждается в элементе данных с указанным именем
    . . .

}

Листинг 28.

public interface InfoBusMember {

    public void setInfoBus (InfoBus infobus)
        throws PropertyVetoException;
    // Установка шины, ассоциированной с компонентом.
    // Обычно вызывается методом InfoBus.join()

    public void addInfoBusListener
        (VetoableChangeListener vcl);
    // Обслуживание подписки на возможность запрета
    // изменения свойства InfoBus

    public void addInfoBusListener
        (PropertyChangeListener pcl);
    // Обслуживание подписки на информацию об изменении
    // свойства InfoBus
    . . .

}

Листинг 29.

public class InfoBusMemberImpl
    extends Object implements InfoBusMember {

    public void joinInfoBus (String busName)
        throws InfoBusMembershipException;
    // Подключение к шине с заданным именем

    public void leaveInfoBus ()
        throws PropertyVetoException,
               InfoBusMembershipException;
    // Отключение от шины
. . .

}

Листинг 30.

public class InfoBusEvent
    extends java.util.EventObject {

    InfoBusEvent (String itemName,
        InfoBusEventListener source);
    // Конструктор. Задаются имя ассоциированного
    // элемента данных и источник события

    public String getDataItemName ();
    // Возвращает имя ассоциированного элемента данных
}

Листинг 31.

public class InfoBusItemRequestedEvent
    extends InfoBusEvent {

    InfoBusItemRequestedEvent (String itemName,
                InfoBusDataConsumer consumer);
    // Конструктор. Устанавливает пустое значение
    // свойства DataItem и вызывает конструктор
     // InfoBusEvent

    public void setDataItem (DataItem item);
    // Ассоциирует элемент данных с событийным объектом

    public DataItem getDataItem ();
    // Возвращает ассоциированный элемент данных

    public InfoBusDataConsumer getSourceAsConsumer ();
    // Возвращает источник события
}

Листинг 32.

public interface Aggregate
    extends java.rmi.Remote, java.io.Serializable {

    Aggregate getInstanceOf
        (Class requestedInterface);
    // Возвращает объект, реализующий методы
    // заданного интерфейса (класса)

    boolean isInstanceOf (Class requestedInterface);
    // Истина, если заданный интерфейс (класс) входит
    // в число поддерживаемых

    Enumeration getTypes ();
    // Возвращает набор поддерживаемых интерфейсов
    // (классов)
    ...

}

Comments: info@citmgu.ru
Copyright © CIT


JavaScript

  • Обработчики событий JavaScript
    Наталия Бельтикова, Ирина Кузина (РНЦ "Курчатовский институт")

  • Методы и функции JavaScript
    Наталия Бельтикова, Ирина Кузина (РНЦ "Курчатовский институт")

  • Объекты JavaScript
    Наталия Бельтикова, Ирина Кузина (РНЦ "Курчатовский институт")

  • Примеры скриптов
    Наталия Бельтикова, РНЦ "Курчатовский институт"

Нам весьма интересны любые Ваши предложения о сотрудничестве.


Вывод окна сообщений

(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Вывод окна сообщений.

Используя методы alert, confirm, prompt можно выводить сообщения пользователю. Сообщение, выводимое alert, используется для вывода предупреждений пользователю. Метод confirm используется для сообщений, требующих принятия решения пользователем. При использовании prompt окно сообщений содержит само сообщение и поле ввода текста, который при нажатии кнопки "OK" может передаваться серверу или использоваться при вызове другого скрипта.

Для этого в теле документа в тагах <FORM> используются обработчики событий onClick и методы alert, prompt, а для confirm используется функция test, описанная в тагах <SCRIPT>.

<script language="JavaScript">
function test() {
  if (confirm("If you want to close the window, press 'OK'?")) { window.close()} }
</script>
<form>
<input value="alert" onClick="alert('Message for users')">
<input value="confirm" onClick="test()">
<input value="prompt" onClick="prompt('Enter your name, please','')">
</form>


Графические часы

Домашняя страница Алексея Александрова

Первый пример - это часы, отображающие время загрузки страницы (т.е. момент вызова скрипта). Используются методы объекта Date (getHours, getMinutes) и графические файлы, отображающие полученное время (имена этих файлов соответствуют цифрам - 0-9).

Во втором примере, отображающем текущую дату, также используются методы объекта Date (getDate, getMnth, getYear) и графические файлы, отображающие полученную дату (имена этих файлов соответствуют цифрам - 0-9).

1.<SCRIPT LANGUAGE="JavaScript">
<!--
// Copyright (c) 1996-1997 Tomer Shiran. All rights reserved.
// Permission given to use the script provided that this notice remains as is.
// Additional scripts can be found at http:
//www.geocities.com/~yehuda
/// image files needed:
// dg0.gif
// dg1.gif
// dg2.gif
// dg3.gif
// dg4.gif
// dg5.gif
// dg6.gif
// dg7.gif
// dg8.gif
// dg9.gif
// dgam.gif
// dgpm.gif
// dgc.gif
// Any set of digit images (0-9), an "am" image,
// a "pm" image, and a colon image respectively
// will work with this script.
// instructions:
// Place all image files in a folder / directory.
// Add this script, including all comments, to
// the desired HTML document. The HTML file must
// be located in the same directory as the image
// files.
document.write(setClock())
function setClock() {
    // initialize accumulative HTML variable to empty string
    var text = ""

// set standard convention for digit and punctuation images
    var openImage = "<IMG SRC=\"" + getPath(location.href) + "dg"
    var closeImage = ".gif\" HEIGHT=21 WIDTH=16>"
    // initialize time-related variables with current time settings
    var now = new Date()
    var hour = now.getHours()
    var minute = now.getMinutes()
    now = null
    var ampm = ""
    // validate hour values
    and set value of ampm
    if (hour >= 12) {
        hour -= 12
        ampm = "pm"
    } else
        ampm = "am"
    hour = (hour == 0) ? 12 : hour
    // add zero digit to a one digit minute as spaceholder
    if (minute < 10)
        minute = "0" + minute
// do not parse this number!
    // convert minute and hour values to strings
    minute += ""
    hour += ""
    // assign image tags according to the value of hour
    for (var i = 0; i < hour.length; ++i) {
        text += openImage + hour.charAt(i) + closeImage
    }
    // assign image tag of colon separator to text variable
    text += openImage + "c.gif\" HEIGHT=21 WIDTH=9>"
    // assign image tags according to the value of minute
    for (var i = 0; i < minute.length; ++i) {
        text += openImage + minute.charAt(i) + closeImage
    }
    // assign am / pm image tag to text variable
    text += openImage + ampm + closeImage
    // return accumulative HTML string
    return text}function getPath(url) {
    lastSlash = url.lastIndexOf("/")
    return url.substring(0, lastSlash + 1)}
// -->
</SCRIPT>
2.<SCRIPT LANGUAGE="JavaScript">
<!--
// Copyright (c) 1996-1997 Tomer Shiran. All rights reserved.
// Permission given to use the script provided that this notice remains as is.
// Additional scripts can be found at http:
//www.geocities.com/~yehuda
/// image files needed:
// *******************
// dg0.gif
// dg1.gif
// dg2.gif
// dg3.gif
// dg4.gif
// dg5.gif
// dg6.gif
// dg7.gif
// dg8.gif
// dg9.gif
// dgp.gif
// Any set of digit images (0-9), and a period
// image (.) will work with this script.
// instructions:
// *************
// Place all image files in a folder / directory.
// Add this script, including all comments, to
// the desired HTML document. The HTML file must
// be located in the same directory as the image
// files.
document.write(setDate())
function setDate() {
    // initialize accumulative HTML variable to empty string
    var text = ""
    // set standard convention for digit and punctuation images
    var openImage = "<IMG SRC=\"" + getPath(location.href) + "dg"
    var closeImage = ".gif\" HEIGHT=21 WIDTH=16>"
    // initialize time-related variables with current date settings
    var now = new Date()
    var month = now.getMonth()
    var date = now.getDate()
    var year = now.getYear()
    now = null
    // convert integer value of month to standard range
    month++ // 0 - 11 => 1 - 12
    // convert minute and hour values to strings
    month += ""
    date += ""
    year += ""
    // assign image tags associated with month to text variable
    for (var i = 0; i < month.length; ++i) {
        text += openImage + month.charAt(i) + closeImage
    }
    // assign image tag of period separator to text variable
    text += openImage + "p.gif\" HEIGHT=21 WIDTH=9>"
    // assign image tags associated with date to text variable
    for (var i = 0; i < date.length; ++i) {
        text += openImage + date.charAt(i) + closeImage
    }
    // assign image tag of period separator to text variable
    text += openImage + "p.gif\" HEIGHT=21 WIDTH=9>"
    // assign image tags associated with year to text variable
    for (var i = 0; i < year.length; ++i) {
        text += openImage + year.charAt(i) + closeImage
    }
    // return accumulative HTML string
    return text}function getPath(url) {
    lastSlash = url.lastIndexOf("/")
    return url.substring(0, lastSlash + 1)}
// -->
</SCRIPT>


Компонентная объектная модель JavaBeans

Материал любезно предоставлен компанией Jet Infosystems

  • 1. Введение
  • 2. Коротко о языке Java
  • 3. Основные понятия модели JavaBeans
  • 4. Афиширование и выяснение интерфейсов
  • 5. Механизм событий
    • 5.1. Действия, выполняемые источником события
    • 5.2. Действия, выполняемые подписчиком события
    • 5.3. Некоторые комментарии
  • 6. Свойства компонентов
    • 6.1. Методы и события, ассоциированные со свойствами
    • 6.2. Настройка свойств
  • 7. Сохранение компонентов в долговременной памяти
    • 7.1. Сохранение и восстановление компонентов
    • 7.2. Упаковка компонентов
  • 8. Компоненты и контейнеры
  • 9. Обмен данными
  • 10. Агрегирование интерфейсов
  • 11. Заключение
  • 12. Литература
  • Листинги

1. Введение

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

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

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

Компонентные объектные среды обладают всеми достоинствами, присущими объектно-ориентированному подходу:

  • инкапсуляция объектных компонентов скрывает сложность реализации, делая видимым только предоставляемый вовне интерфейс;
  • наследование позволяет развивать созданные ранее компоненты, не нарушая целостность объектной оболочки;
  • полиморфизм по сути дает возможность группировать объекты, характеристики которых с некоторой точки зрения можно считать сходными.

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

JavaBeans - не единственная и не первая компонентная объектная среда, однако, учитывая огромную популярность Java-технологии, мы решили рассмотреть именно JavaBeans, сосредоточившись на компонентной объектной модели. Наше изложение основывается на версии спецификации JavaBeans [1] от 25 июля 1997 года. Используются также некоторые другие спецификации и их проекты [2, 3, 4, 5].

2. Коротко о языке Java

Мы позволим себе коротко напомнить читателям некоторые сведения о языке Java, которые понадобятся нам для дальнейшего изложения. Более полное описание языка и ассоциированной технологии можно найти, например, в статье [6].

Java - объектно-ориентированный язык. В его основе лежит понятие класса. Класс является шаблоном для создания объектов; он может содержать данные и методы. Существуют различные режимы доступа к элементам класса - private, protected, public.

Java - полностью объектно-ориентированный язык, каждому понятию которого (класс, объект, метод и т.п.) соответствует класс, поддерживающий программную обработку соответствующих "понятийных" объектов.

Классы в языке Java объединяются в пакеты. Каждый пакет определяет отдельное пространство имен. Все классы, входящие в один пакет, являются дружественными по отношению друг к другу, то есть имеют взаимный доступ к переменным и методам, если противное не оговорено явно посредством спецификаторов private или protected.

Для обозначения наследования используется ключевое слово extends. Класс Object - это корень дерева наследования. Имеется предопределенная иерархия классов, описанная в пакете java.lang.

В языке Java отсутствует множественное наследование, однако наличие понятия интерфейса позволяет смягчить это ограничение. Интерфейс представляет собой набор описаний методов. Классы могут реализовывать интерфейсы. Этот факт обозначается ключевым словом implements в заголовке класса.

Класс Class используется для получения во время выполнения информации о "классовых" свойствах объектов. Типичные методы этого класса - forName (получение объекта класса Class по текстовому имени), newInstance (порождение нового объекта данного класса), getMethods (получение массива объектов, описывающих public-методы класса, в том числе унаследованные).

Java-классы могут быть абстрактными, то есть не до конца конкретизированными. Это означает, что в классе описаны методы, определения которых отсутствуют. Такие методы (как и сам класс) должны снабжаться описателем abstract и конкретизироваться в производных классах.

Для обработки исключительных ситуаций, возникающих во время выполнения программы, в языке Java используется конструкция try/catch/finally. Для передачи информации об исключительной ситуации используются объекты классов - наследников класса Throwable.

Механизм потоков - обязательная черта современных операционных сред. В языке Java потоки представлены посредством класса Thread, интерфейса Runnable, спецификатора метода synchronized и методов класса Object wait и notify.

Java-программы подразделяются на два вида - самостоятельные приложения и аплеты. Последние выполняются в среде Web-навигатора и могут поступать по сети. Приложения и аплеты существенно различаются по мерам безопасности, принимаемым в процессе их работы (аплеты контролируются значительно жестче).

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

3. Основные понятия модели JavaBeans

Среда JavaBeans является надстройкой над стандартной Java-технологией. Она наследует понятия и характеристики Java, такие как объектная ориентированность, многопотоковость, использование виртуальной машины, независимость от аппаратно-программной платформы, информационная безопасность и т.п. В JavaBeans нет ничего, не выразимого в терминах языка Java.

Основой среды JavaBeans является компонентная объектная модель, представляющая собой совокупность архитектуры и прикладных программных интерфейсов. Архитектуру образуют основные понятия и связи между ними. Прикладные программные интерфейсы характеризуют набор сервисов, предоставляемых элементами среды. Они описываются в терминах синтаксиса и семантики Java-классов и интерфейсов.

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

Неформально компонент ("кофейное зерно" - Java Bean) можно определить как многократно используемый программный объект, допускающий обработку в графическом инструментальном окружении и сохранение в долговременной памяти. С реализационной точки зрения компонент - это Java-класс и, возможно, набор ассоциированных дополнительных классов.

Каждый компонент предоставляет набор методов, доступных для вызова из других компонентов и/или контейнеров.

Компоненты могут обладать свойствами. Совокупность значений свойств определяет состояние компонента. Свойства могут быть доступны на чтение и/или запись посредством методов выборки и установки.

Компоненты могут порождать события (быть источниками событий), извещая о них другие компоненты, зарегистрировавшиеся в качестве подписчиков. Извещение (называемое также распространением события) заключается в вызове определенного метода объектов-подписчиков.

Типичным примером события является изменение свойств компонента. В общем случае компонент может предоставлять подписку на получение информации об изменении и на право запрещать изменение.

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

Состояние компонентов может быть сохранено в долговременной памяти. Наличие методов для подобного сохранения выделяет компоненты JavaBeans среди произвольных Java-классов.

Компоненты JavaBeans могут упаковываться для более эффективного хранения и передачи по сети. Описание соответствующего формата является частью спецификаций JavaBeans.

Жизненный цикл компонентов JavaBeans можно подразделить на три этапа:

  • разработка и реализация компонента;
  • сборка приложения из компонентов;
  • выполнение приложения.

Разработка и реализация компонентов JavaBeans по сути не отличается от создания произвольных Java-объектов, хотя и может включать реализацию специфических методов.

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

Компоненты взаимодействуют между собой и с инструментальным окружением. Взаимодействие осуществляется двумя способами - вызовом методов и распространением событий.

Спецификации JavaBeans описывают только локальное взаимодействие компонентов, осуществляемое в пределах одной виртуальной Java-машины. (Напомним, впрочем, что Java-аплеты рассчитаны на передачу по сети, так что возможно собрать приложение из компонентов, первоначально распределенных по сети.) Удаленные объекты могут связываться по протоколам архитектуры CORBA [7], с помощью удаленного вызова методов (Remote Method Invocation - RMI) или иными способами, не относящимися к области действия спецификации JavaBeans (рис. 1).

Далее мы подробно рассмотрим, как описанные основные понятия реализуются в среде JavaBeans.

4. Афиширование и выяснение интерфейсов

В среде JavaBeans существуют способы динамического (то есть не по исходным текстам) выяснения характеристик компонентов. К таким характеристикам относятся:

  • методы, доступные для вызова другими компонентами и инструментальным окружением;
  • свойства, которые можно опрашивать и/или изменять;
  • события, порождаемые данным компонентом.

Подобное выяснение в терминологии JavaBeans называется интроспекцией*.

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

Принципиальная возможность интроспекции была изначально заложена в Java-технологии. Файлы классов содержат достаточно информации для выяснения всех необходимых характеристик объектов. Воспользоваться этой информацией можно с помощью класса Class, пакета java.lang.reflect и некоторых других средств, которые будут рассмотрены далее. Чтобы оценить полноту сведений, предоставляемых Java-средой, целесообразно рассмотреть фрагменты описаний класса Class (листинг 1), а также класса Method из пакета java.lang.reflect (листинг 2).

Таким образом, разработчики и пользователи компонентов ведут работу исключительно Java-средствами. Более того, в большинстве случаев разработчику, чтобы сделать класс полноценным элементом среды JavaBeans, достаточно придерживаться определенной дисциплины описания методов, не прибегая к явному афишированию характеристик. Например, по умолчанию в число афишируемых попадают все public-методы компонента.

Способность компонента среды JavaBeans по существу без дополнительных усилий со стороны разработчика предоставлять информацию о своем интерфейсе называется рефлексией. Рефлексия базируется на дисциплине определения методов. Эта дисциплина состоит в следовании заданным шаблонам при выборе имен методов, а также типов формальных параметров и результатов. Далее, по ходу изложения, мы будем приводить эти шаблоны.

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

Интерфейс BeanInfo содержит методы, позволяющие получить объекты-описатели характеристик компонента. В число этих методов входят getBeanDescriptor, getMethodDescriptors и т.д. (см. листинги 3 и 4). Поскольку реализация методов может быть сколь угодно изощренной, у разработчика появляется возможность ассоциировать с компонентом ресурсы (например, файлы), содержащие описательную информацию. Класс SimpleBeanInfo, входящий в пакет java.beans, является "пустой" реализацией интерфейса BeanInfo, отрицающей наличие у компонента каких-либо афишируемых методов, свойств и событий. Разработчик может создать производный класс и выборочно переопределить методы класса SimpleBeanInfo.

Класс Introspector реализует процесс интроспекции. По заданному компоненту он конструирует объект класса BeanInfo (см. листинг 5). Действует Introspector следующим образом. Сначала он пытается найти класс, имя которого получается из имени класса компонента приписыванием текста "BeanInfo". Если такой класс находится, а его методы возвращают непустые дескрипторы, соответствующая информация используется при конструировании результирующего объекта BeanInfo. В противном случае Introspector полагается на механизм рефлексии и анализирует имена и типы параметров public-методов класса компонента и его предшественников.

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

  • Получение объектов Field, Method и Constructor возможно только путем применения методов класса Class, которые вызывают системный менеджер безопасности.
  • Доступ к полям и методам объектов производится с применением стандартных правил языка Java.

Кроме того, аплеты подвергаются дополнительному контролю.

Детальный анализ модели безопасности Java выходит за рамки данной статьи. Здесь мы отметим лишь, что компонентная объектная среда не привносит каких-либо новых, специфических угроз, поскольку она полностью описывается в терминах языка Java.

5. Механизм событий

Согласно спецификациям JavaBeans, у каждого события есть источник и, быть может, один или несколько подписчиков (получателей).

Источник обязан:

  • выбрать имя метода, вызываемого в компонентах-подписчиках при распространении события. Этот метод должен содержаться в интерфейсе, который является расширением интерфейса EventListener (данное расширение мы будем называть интерфейсом события);
  • реализовать метод регистрации подписчиков события и метод аннулирования регистрации;
  • при распространении события вызвать метод, описанный в интерфейсе события, во всех компонентах-подписчиках.

В свою очередь, подписчик должен предпринять следующие действия:

  • выполнить реализацию интерфейса события, то есть по сути реализовать метод обработки события (напомним, что имя этого метода выбрал источник);
  • зарегистрироваться в качестве подписчика события.

Рассмотрим перечисленные шаги более подробно.

5.1. Действия, выполняемые источником события

Источник события по своему выбору назначает имя метода, вызываемого в компонентах-подписчиках при распространении события. Чтобы сделать возможной автоматическую интроспекцию компонентов на предмет распространяемых ими событий (то есть для поддержки рефлексии), данный метод описывается в расширении пустого интерфейса java.util.EventListener, играющего роль этикетки. Пример расширения приведен на листинге 6.

По соглашению, опять-таки направленному на поддержку рефлексии, имя интерфейса-расширения должно оканчиваться цепочкой символов "Listener".

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

Метод обработки события должен иметь один аргумент, которым является так называемый событийный объект - преемник класса java.util. EventObject. Посредством этого объекта подписчику передается информация об источнике и другие характеристики события. Определение класса EventObject приведено на листинге 7. Листинг 8 содержит возможное описание класса KeyPressedEvent (окончание "Event" - еще одно требование рефлексии).

Реализация методов регистрации подписчиков, аннулирования регистрации, а также собственно распространения события может быть выполнена способом, приведенным на листинге 9. Отметим, что при распространении события вызов методов подписчиков производится синхронным образом, в рамках потока источника события.

Обратим внимание на два аспекта программного текста, приведенного на листинге 9. Во-первых, в источнике необходимо обеспечить безопасность работы в многопотоковой среде. Методы add/remove выполняются в рамках потоков подписчиков, поэтому они нуждаются в синхронизации. В методе fire также следует учитывать возможность регистрационных действий параллельно с распространением события. Отсюда три вхождения ключевого слова synchronized.

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

      public void add<имя интерфейса события>
                    (<имя интерфейса события> подписчик);
      public void remove<имя интерфейса события>
                       (<имя интерфейса события> подписчик);

Определение метода fire - внутреннее дело источника события.

5.2. Действия, выполняемые подписчиком события

Реализация интерфейса события - основное действие, выполняемое подписчиком. Его содержательная сторона зависит от специфики подписчика. Чисто технические моменты отражены на листинге 10.

Регистрация подписки производится обращением к соответствующему add-методу источника события.

Общая схема взаимодействия источника и подписчиков события представлена на рис. 2. Если проводить аналогию с обычной подпиской на газеты и журналы, то базовый механизм, описанный в спецификациях JavaBeans, соответствует оформлению подписки в редакции каждого издания (а не в отделении связи). В спецификациях упоминается также о возможности реализации адаптеров - посредников, берущих на себя централизованное оформление подписки и реализацию определенной дисциплины распространения событий. При наличии адаптера схема взаимодействия источников и подписчиков событий может выглядеть так, как показано на рис. 3. Очевидно, подобная схема облегчает жизнь всем взаимодействующим сторонам (не считая адаптера, который необходимо реализовать).

При установлении взаимодействия между источниками и подписчиками событий значительная часть работы может быть выполнена инструментальной средой. Эта среда может сгенерировать код, содержащий обращение к add-методам, обеспечить согласованность названий методов обработки событий, сгенерировав при необходимости вспомогательные классы, и т.п.

5.3. Некоторые комментарии

При проектировании механизма событий разработчикам спецификаций JavaBeans пришлось учитывать целую гамму требований:

  • механизм должен естественным образом интегрироваться в Java-среду;
  • механизм событий должен быть простым и для реализации, и для использования;
  • механизм должен быть расширяемым, поддерживать разные модели распространения событий;
  • механизм должен допускать интеграцию с другими компонентными средами.

Таким образом, задача перед разработчиками стояла трудная, и, на наш взгляд, они не сумели найти достаточно хорошего решения, допустив ряд методологических просчетов.

Если есть система, содержащая n источников событий и m подписчиков, то при использовании базового механизма число связей, которые необходимо поддерживать, имеет порядок n * m. Это много. Напомним, что одним из основных побудительных мотивов развития объектных технологий было понижение внутренней сложности программных систем путем обеспечения относительной независимости компонентов. Использование адаптеров позволяет уменьшить количество связей до величины порядка n + m, однако оно нуждается в стандартизации.

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

Пространство событий не структурировано, хотя некоторые действия в некоторых частях среды Java (например, в абстрактном оконном инструментарии, AWT) в этом направлении предприняты. Возможность иерархической организации элементов - одно из необходимых условий успешного создания и сопровождения сложных систем. Здесь это условие нарушено (конечно же, иерархии классов в данном случае недостаточно).

Складывается впечатление, что в предлагаемом виде механизм событий является слишком простым, в нем не хватает ряда понятий. По существу это способ диспетчеризации вызовов методов. Какая-либо "событийность" в такой трактовке попросту отсутствует. Обычно события возникают с частотой, определяемой факторами, внешними по отношению к программной системе, так что необходимо минимизировать по крайней мере время распространения события. При предлагаемом синхронном вызове методов оценить время распространения не представляется возможным. Более того, необходимо позаботиться о противодействии атакам на доступность, производимым путем регистрации подписчика, метод обработки которого не возвращает управления. Часть этих проблем можно решить, реализовав интеллектуальный многопотоковый адаптер, но тогда придется отдельно решать вопросы безопасности, так как ряд защитных мер в Java-технологии основан на прослеживании стека вызовов, и опасность может грозить со стороны зловредного источника событий.

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

6. Свойства компонентов

Свойства компонентов (такие как цвет изображения, размер и т.п.) можно представлять себе в виде полей объектов; в большинстве случаев так они и реализуются. Тем не менее, спецификации JavaBeans, в соответствии с последовательным объектно-ориентированным подходом, предусматривают доступ к свойствам только посредством специальных методов выборки и установки, так что в принципе свойства могут быть устроены сколь угодно сложным образом.

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

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

Перейдем к детальному рассмотрению заявленных тем.

6.1. Методы и события, ассоциированные со свойствами

Свойства компонентов могут быть скалярными и индексируемыми. Выборка и установка скалярных свойств осуществляется с помощью методов get/set:

       public <тип_свойства> get<имя_свойства> ();
       public void set<имя_свойства> (<тип_свойства> p);
       (такой шаблон заголовков методов необходим для поддержки рефлексии).

Например, если свойством компонента является цвет, соответствующие методы могут описываться как

       public Color getColor ();
       public void setColor (Color c);
       (класс Color определяется в пакете java.awt).

Особый шаблон предусмотрен для выборки булевых свойств:

       public boolean is<имя_свойства> ();

Вообще говоря, свойства могут быть доступны только на чтение или только на запись; тогда для них определяется лишь один из методов - get или set соответственно.

Индексируемые свойства образуют массивы с целочисленными индексами. С этими массивами можно работать покомпонентно или как с единым целым. Шаблоны соответствующих методов и их примеры приведены на листинге 11 (под <типом_свойства> здесь понимается тип элемента массива).

Спецификации JavaBeans предусматривают наличие связанных свойств, после изменения которых возбуждается событие propertyChange. Другие компоненты могут подписаться на это событие и, следовательно, получать информацию о производимых изменениях, анализируя объект-параметр PropertyChangeEvent, фрагмент описания которого приведен на листинге 12.

Метод propertyChange, вызываемый для обработки изменения значения свойства, описан в интерфейсе PropertyChangeListener (листинг 13). Источник события, в соответствии с общими правилами (см. раздел "Механизм событий"), должен реализовать методы addPropertyChangeListener и removePropertyChangeListener, обеспечивая регистрацию подписчиков.

Вспомогательный класс PropertyChangeSupport, входящий в пакет java.beans, реализует рутинные действия, характерные для обслуживания связанных свойств (см. листинг 14). Естественно, разработчики компонентов могут воспользоваться этим классом.

Помимо связанных, спецификации JavaBeans описывают ограниченные свойства, перед изменением значений которых распространяется событие vetoableChange с параметром PropertyChangeEvent. Подписчики этого события могут отклонить планируемое изменение, возбудив исключительную ситуацию PropertyVetoException. Метод set должен отреагировать на подобное вето, вернув прежнее значение, "извинившись" перед уже оповещенными подписчиками (то есть вызвав их методы vetoableChange с обратной парой новое/старое значение) и передав исключительную ситуацию инициатору изменения. Соответственно, заголовок set-метода для ограниченных свойств приобретает следующий вид:

      public void set<имя_свойства> (<тип_свойства> p) throws PropertyVetoException;

Синтаксически связанные и ограниченные свойства аналогичны, но реализация последних требует гораздо большей аккуратности и от источников (set-методов), и от подписчиков события vetoableChange. Источнику рекомендуется воспользоваться вспомогательным классом java.beans.VetoableChangeSupport, аккуратно выполняющим все необходимые действия. Подписчикам будет проще, если сделать свойство и ограниченным, и связанным. В таком случае до изменения (при обработке события vetoableChange) подписчики заботятся только о голосовании "за" и "против", а после изменения (при обработке события propertyChange) они выясняют, каким же стало новое значение.

6.2. Настройка свойств

Компонент объектной среды особенно полезен тогда, когда его можно настроить. Обычно настройка выполняется во время сборки приложения в инструментальном окружении.

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

Класс-редактор свойства должен реализовывать интерфейс PropertyEditor (см. листинг 15). Обязательными для реализации являются метод setValue () и один из методов прорисовки и редактирования свойства - в графическом или текстовом представлении. По общим правилам, при изменении значения свойства редактор должен возбуждать событие propertyChange. Отсюда необходимость в реализации методов add/remove.

Для установления ассоциаций между типами данных и их редакторами служит класс PropertyEditorManager. Он поддерживает каталог зарегистрированных редакторов; если же явная регистрация отсутствует, PropertyEditorManager пытается отыскать класс, имя которого образовано приписыванием к имени типа текста "Editor" (см. листинг 16).

Для настройки сложных компонентов с большим числом специфических свойств может потребоваться специализированный класс, облегчающий действия пользователей по сравнению со стандартным редактированием бланка. Такой класс-настройщик должен быть прямым или косвенным преемником класса java.awt.Component, одновременно реализуя интерфейс java.beans. Customizer (описание последнего приведено на листинге 17).

Чтобы известить окружение о наличии настройщика, компонент должен предоставлять класс BeanInfo и, в частности, реализовывать метод getCustomizerClass класса BeanDescriptor (см. раздел "Афиширование и выяснение интерфейсов").

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


Компонентная объектная модель JavaBeans

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

7. Сохранение компонентов в долговременной памяти

7.1. Сохранение и восстановление компонентов

Среда JavaBeans полагается на стандартные механизмы сохранения Java-объектов. Таких механизмов два. Интерфейс java.io. Serializable (см. листинг 18) предусматривает сохранение в стандартной форме графа объектов, доступных из данного. Впрочем, методы writeObject/readObject и здесь предоставляют пользователям определенную свободу. Интерфейс java.io.Externalizable (см. листинг 19) делает эту свободу абсолютной - Java-машина берет на себя лишь сохранение классовой информации, все остальное отдается на откуп пользователю. Реализация интерфейса Externalizable целесообразна в первую очередь тогда, когда есть необходимость представить компонент JavaBeans как элемент другой объектной среды, такой, например, как OLE или OpenDoc.

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

Создание нового экземпляра компонентов также сопряжено с некоторыми тонкостями. Экземпляр может создаваться в разных контекстах, например, в контексте приложения или в контексте инструментального окружения. Метод instantiate класса java.beans.Beans (см. листинг 20) наделен достаточным интеллектом, чтобы учесть контекст и сделать все корректно; в этой связи пользователю рекомендуется избегать создания экземпляров иными методами.

Помимо instantiate, класс Beans содержит некоторые другие методы, облегчающие управление компонентами объектной среды (см. листинг 20).

7.2. Упаковка компонентов

Упаковка сохраненных Java-объектов (и, в частности, компонентов объектной среды) важна прежде всего для эффективной доставки их по сети. Спецификации JavaBeans рекомендуют (но не предписывают) использовать для упаковки формат JAR (Java-архив).

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

На примере сохранения компонентов можно видеть, насколько упрощается жизнь разработчиков за счет продуманной организации Java-технологии. Проблема сохранения решена на уровне стандартного Java-окружения, так что все надстройки (такие как JavaBeans) могут полагаться на существующие механизмы.

8. Компоненты и контейнеры

Представляется удивительным, что спецификация [3], регламентирующая фундаментальное отношение компоненты/контейнер, не вошла в число первоочередных и дорабатывается только сейчас, в рамках новой версии JavaBeans с рабочим названием Glasgow.

Механизм контейнеров необходим для достижения по крайней мере двух целей:

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

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

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

Чтобы избежать употребления перегруженного в Java-среде термина "контейнер", авторы спецификации употребляют сочетание "BeanContext". Мы не будем этого делать, поскольку, помимо предоставления общего контекста, у контейнера есть и другие функции; надеемся, что к путанице это не приведет.

Реализация механизма контейнеров использует служебный интерфейс java.util.Collection, который предполагается включить в одну из ближайших версий Java-среды. Фрагмент описания этого интерфейса, содержащий типичные методы для работы с наборами, приведен на листинге 21.

Интерфейс java.beans.BeanContextChild содержит описания методов, позволяющих ассоциировать с компонентом объемлющий контейнер и опрашивать эту ассоциацию (см. листинг 22). Таким образом, связи, ведущие вниз (от контейнера к компоненту), обслуживает интерфейс Collection, а связи, ведущие вверх, - интерфейс BeanContextChild.

С отношением компоненты/контейнер ассоциировано событие beanContextChanged. Соответствующий интерфейс (BeanContextListener) описан на листинге 23.

Вообще говоря, распространение этого события может происходить в несколько приемов: контейнер, получив извещение от компонента, передает его своим подписчикам, в число которых, вероятно, входит объемлющий контейнер, и т.д. Чтобы распознать подобные "вторичные" события и определить первоисточник, предусмотрены соответствующие методы событийного объекта BeanContextEvent (см. листинг 24).

Изменения совокупности компонентов, входящих в контейнер, обслуживает событийный объект BeanContextMembershipEvent. Он содержит информацию о разности ("дельте") между старым и новым составом контейнера, то есть о том, какие компоненты были добавлены или, напротив, удалены (листинг 25).

Интегрирующим элементом рассматриваемой спецификации является интерфейс java.beans.BeanContext, описывающий связи, идущие как вверх, так и вниз (за счет расширения интерфейсов BeanContextChild и Collection соответственно). Интерфейс BeanContext позволяет также опросить предоставляемые контейнером сервисы и ресурсы. Содержит он и методы для регистрации подписчиков событий (см. листинг 26).

Разумеется, кроме синтаксиса специфицируется семантика методов интерфейса BeanContext.

При добавлении компонента методом add (), унаследованным у интерфейса Collection, контейнер "привязывает" этот компонент к себе, вызывая в нем метод setBeanContext с аргументом this (полноценные компоненты должны реализовывать интерфейс BeanContextChild). В свою очередь, компонент может протестовать против включения в контейнер, возбуждая исключительную ситуацию PropertyVetoException. Если это случится, контейнер обязан отменить добавление, возбудив исключительную ситуацию IllegalArgumentException. При успешном добавлении компонента контейнер распространяет подписчикам событие beanContextChanged с соответствующим объектом-параметром. Контейнер должен подписаться у нового компонента на события, связанные со свойствами последнего, чтобы отслеживать по крайней мере свойство beanContext и не допустить нарушения целостности иерархической структуры. Кроме того, компонент регистрируется как подписчик событий, возбуждаемых контейнером.

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

Отметим, что контейнерная реализация методов интерфейса Collection должна быть безопасной в многопотоковой среде.

Рассмотренная спецификация заполняет очень важную методологическую брешь в JavaBeans. Хотелось бы надеяться, что переход к новой версии прикладного программного интерфейса Java, включающей интерфейс BeanContext, произойдет в ближайшее время.

9. Обмен данными

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

Соответствующая спецификация [5] готовится специалистами компаний Sun Microsystems и Lotus Development. И хотя совместная работа только началась, мы сочли необходимым осветить выдвинутые предложения ввиду исключительной важности затрагиваемой темы.

Центральным понятием предлагаемых спецификаций является информационная шина. Компоненты могут подключаться к шине, помещать на нее данные (это делают поставщики) и считывать данные (это делают потребители). Обмен носит асинхронный характер: поставщик, поместив данные, не заботится о том, когда они будут считаны. Для идентификации элементов данных используются их имена.

Информационная шина описывается классом InfoBus. Методы этого класса (реализуемого в рамках виртуальной Java-машины) порождают экземпляры шины, осуществляют подключение компонентов к подходящим экземплярам, отслеживают список шин и подключенных к ним компонентов, распространяет события, обслуживающие обмен данными, и т.п. Фрагмент описания класса InfoBus представлен на листинге 27.

Процесс информационного взаимодействия компонентов в спецификациях InfoBus можно подразделить на пять фаз:

  • подключение к шине;
  • прослушивание шины;
  • установление контакта между поставщиком и потребителем, передача элемента данных;
  • выяснение формата элемента данных;
  • интерпретация элемента данных.

Для подключения к шине компонент должен реализовать интерфейс InfoBusMember, получить ссылку на экземпляр шины и войти в число ее членов. Фрагмент интерфейса InfoBusMember приведен на листинге 28. Обратим внимание, что шина, ассоциируемая с компонентом, трактуется как его свойство, изменение значения которого может отслеживаться на основе механизма событий.

Для облегчения реализации интерфейса InfoBusMember спецификации предлагают класс InfoBusMemberImpl, который, в дополнение к "обязательным", предоставляет еще два удобных метода - joinInfoBus () и leaveInfoBus () (см. листинг 29).

Для реализации второй фазы (прослушивание шины) поставщик должен подписаться на информацию о запросах данных, воспользовавшись методом addDataProducer () класса InfoBus. Аналогично, потребитель должен подписаться на информацию о наличии данных, обратившись к методу addDataConsumer (). Компонент может одновременно являться и поставщиком, и потребителем (типичный пример - промежуточное звено конвейера).

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

Класс InfoBusEvent является базовым для событийных объектов поставки/приема. Его описание приведено на листинге 30.

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

Потребитель, желающий получить данные, рассылает объект класса InfoBusItemRequestedEvent, описание которого приведено на листинге 31. Обратим внимание на метод setDataItem, позволяющий поставщику, получившему событийный объект, "привязать" к нему элемент данных, выдав его тем самым инициатору запроса.

Формат элемента данных определяется интерфейсами, которые этот элемент реализует. Базовым интерфейсом элементов данных является DataItem, в число преемников которого входят CollectionAccess, DbAccess и др. Поскольку проблема обмена структурированными данными уже решена в рамках абстрактного оконного инструментария (пакет java.awt.datatransfer), представляется естественным и в спецификациях InfoBus пойти тем же путем, что и было сделано.

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

10. Агрегирование интерфейсов

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

Решению сформулированной задачи служит очень важная в концептуальном плане спецификация [4]. Центральное место в ней занимает понятие агрегата - сущности, обладающей "многогранным" поведением, динамически унаследованным у совокупности классов (интерфейсов). В агрегат входят представители соответствующих классов, а также координатор, способный по запросу выдавать нужного представителя.

Спецификации не предусматривают внесения каких-либо изменений в язык Java. Агрегат и входящий в него координатор представлены интерфейсом Aggregate (см. листинг 32). Интерфейс Aggregate содержит методы, позволяющие получить ссылку на объект требуемого класса и опросить поддерживаемый агрегатом набор классов.

Формально каждый представитель является самостоятельным объектом, принадлежащим своему классу, однако с идейной точки зрения более правильно считать, что метод getInstanceOf () возвращает разные проявления одного (агрегатного) объекта.

11. Заключение

Спецификации JavaBeans в совокупности с предлагаемыми дополнениями образуют целостную архитектуру компонентной объектной среды, позволяющей накапливать и многократно использовать программистские знания. Уникальным достоинством JavaBeans является Java-фундамент, предоставляющий современный объектный язык, гарантирующий мобильность и информационную безопасность разрабатываемого программного обеспечения.

Компоненты среды JavaBeans оказываются мобильными вдвойне. Мост к ActiveX автоматически "вкладывает" их в эту среду, а средства Java IDL помогают организовать взаимодействие с CORBA-брокерами объектных запросов.

Разработка спецификаций JavaBeans следовала и следует традициям открытости, заложенным на предыдущих этапах развития Java-технологии. Партнерами JavaSoft в этой работе выступали такие известные компании, как Apple Computer, Borland International, IBM, Informix Software, Lotus Development, Netscape Communications, Novell, Oracle, Silicon Graphics, Sybase, Texas Instruments и многие другие. Спецификации доступны для свободного ознакомления, внесения замечаний и предложений.

Политика партнерства способствовала созданию многочисленных инструментальных окружений, поддерживающих процессы разработки и интеграции компонентов JavaBeans. Назовем Data Director for Java (Informix Software), Visual Age for Java (IBM), BeanMachine (Lotus Development), Cosmo Code (Silicon Graphics). На подходе JBuilder (Borland International), Visual JavaScript (Netscape Communications), Java Studio и Java Workshop (SunSoft), PowerJ (Sybase) и др.

Разработчики, делающие ставку на JavaBeans, не рискуют проиграть. Эта компонентная объектная среда вступает в пору зрелости, обладая всеми качествами, необходимыми для успешного продвижения.

12. Литература

  1. The JavaBeans 1.01 specification. - Sun Microsystems, July, 1997.
  2. Java Core Reflection. API and Specification. - Sun Microsystems, February, 1997.
  3. L. Cable, G. Hamilton. A Draft Proposal to define an Extensible Runtime Containment and Services Protocol for JavaBeans (Version 0.97). - JavaSoft, August, 1997.
  4. L. Cable, G. Hamilton. A Draft Proposal for a Object Aggregation/Delegation Model for JavaBeans (Version 0.8). - JavaSoft, August, 1997.
  5. InfoBus Specification. Draft Version 0.04 (First Public Review). - Sun Microsystems, Inc., Lotus Development Corporation, July, 1997.
  6. А. Таранов, В. Цишевский. Java как центр архипелага. - Jet Info, 1996, N 9.
  7. Ю. Пуха. Объектные технологии построения распределенных информационных систем. - Jet Info, 1997, N 16.


Методы и функции JavaScript

Наталия Бельтикова, Ирина Кузина (РНЦ "Курчатовский институт")

abs | forward | setDate
acos | getDate | setHours
alert | getDay | setMinutes
anchor | getHours | setMonth
asin | getMinures | setSeconds
atan | getMonth | setTime
back | getSeconds | setTimeout
big | getTime | setYear
blink | getTimezoneOffset | sin
blur | getYear | small
bold | go | sqrt
ceil | indexOf | strike
charAt | isNaN | sub
clearTimeout | italics | submit
click | lastIndexOf | substring
close (объект document) | link | sup
close (объект window) | log | tan
confirm | max | toGMTString
cos | min | toLocaleString
escape | open (объект document) | toLowerCase
eval | open (объект window) | toUpperCase
exp | parse | unescape
fixed | parseFloat | UTC
floor | parseInt | write
focus | pow | writeln
fontcolor | prompt |
fontsize | random |

Метод abs

Возвращает абсолютное значение числа.

Синтаксис:

Math.abs(number)
number любое числовое выражение или свойство существующего объекта.

Метод:

Math

Метод acos

Возвращает арккосинус числа (в радианах).

Синтаксис:

Math.acos(number)
number числовое выражение между -1 и 1 или свойство существующего объекта.

Метод:

Math

Описание:

Метод acos возвращает числовое значение между 0 и Пи. Если значение number находится за пределами данного диапазона, возвращаемое значение всегда будет 0.

Смотрите также:

  • методы asin, atan, cos, sin и tan.

Метод alert

Отображает диалоговое окно Alert с сообщением и кнопкой OK.

Синтаксис:

alert("message")

Метод:

window

Описание:

Метод alert используется для отображения сообщения, не требующего решения пользователя. Аргумент message определяет сообщение, которое содержит диалоговое окно.
Хотя alert является методом объекта window вам не нужно определять windowReference, при его вызове. Например, windowReference.alert() необязательно.

Смотрите также:

  • методы confirm, prompt.

Метод anchor

Создает HTML якорь, который используется как гипертекстовая ссылка.

Синтаксис:

text.anchor(nameAttribute)
text любая строка или свойство существующего объекта.
nameAttribute любая строка или свойство существующего объекта.

Метод:

string

Описание:

Метод anchor используется с методами write или writeln для программного создания и отображения якоря в документе. Якорь создается с помощью метода anchor, а write или writeln используется для отображения якоря в документе.
В синтаксисе строка text представляет собой текст, который увидит пользователь. Строка nameAttribute представляет собой атрибут NAME тага <A>.
Якоря, созданные с помощью метода anchor становятся элементами массива anchors. Информацию о массиве anchors смотрите в объекте anchor.

Смотрите также:

  • метод link

Метод asin

Возвращает арксинус числа (в радианах).

Синтаксис:

Math.asin(number)
number числовое выражение между -1 и 1 или свойство существующего объекта.

Метод:

Math

Описание:

Метод asin возвращает числовое значение между -Пи/2 и Пи/2. Если значение number находится за пределами данного диапазона, возвращаемое значение всегда будет 0.

Смотрите также:

  • методы acos, atan, cos, sin, tan.

Метод atan

Возвращает арктангенс числа (в радианах).

Синтаксис:

Math.atan(number)
number любое числовое выражение или свойство существующего объекта, представляющее собой тангенс угла.

Метод:

Math

Описание:

Метод atan возвращает числовое выражение между -Пи/2 и Пи/2.

Смотрите также:

  • методы acos, asin, cos, sin, tan.

Метод back

Позволяет вернуться на предыдущий URL в списке посещенных URL'ей.

Синтаксис:

history.back()

Метод:

history

Описание:

Этот метод выполняет действие равносильное выбору пользователем кнопки Back в окне Navigator'а. Метод back также равносилен history.go(-1).

Смотрите также:

  • методы forward, go.

Метод big

Вызывает строку, отображаемою большим шрифтом, как если установить ей таг <BIG>.

Синтаксис:

stringName.big()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод big используется с методами write или writeln.

Смотрите также:

  • методы fontsize, small.

Метод blink

Вызывает мигающую строку, как если установить ей таг <BLINK>.

Синтаксис:

stringName.blink()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод blink используется с методами write или writeln.

Смотрите также:

  • методы bold, italics, strike.

Метод blur

Изменен в Navigator 3.0.
Убирает фокус с указанного объекта.

Синтаксис:

1. password.blur()
2. select.blur()
3. textName.blur()
4. textareaName.blur()
password любое значение атрибута NAME объекта password или элемент массива elements.
select любое значение атрибута NAME объекта select или элемент массива elements.
textName любое значение атрибута NAME объекта text или элемент массива elements.
textareaName любое значение атрибута NAME объекта textarea или элемент массива elements.

Метод:

password, select, text, textarea.

Описание:

Метод blur используется для удаления фокуса с указанного элемента формы.

Смотрите также:

  • методы focus, select.

Метод bold

Вызывает строку, отображаемую жирным шрифтом, как если установить ей таг <B>.

Синтаксис:

stringName.bold()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод bold используется с методами write или writeln.

Смотрите также:

  • методы blink, italics, strike.

Метод ceil

Возвращает ближайшее целое числа, округленного в большую сторону или равное числу.

Синтаксис:

Math.ceil(number)
number любое числовое выражение или свойство существующего объекта.

Метод:

Math

Смотрите также:

  • метод floor.

Метод charAt

Возвращает символ указанный в index.

Синтаксис:

stringName.charAt(index)
stringName любая строка или свойство существующего объекта.
index любое целое число от 0 до stringName.length-1 или свойство существующего объекта.

Метод:

string

Описание:

Символы в строке индексируются слева направо. Индексом первого символа является 0, индексом последнего символа - stringName.length-1. Если вы указали index превышающий количество символов в строке, JavaScript возвратит пустую строку.

Смотрите также:

  • методы indexOf, lastindexOf.

Метод clearTimeout

Окончание задержки, установленной методом setTimeout.

Синтаксис:

clearTimeout(timeoutID)
timeoutID задержка, установка которой была возвращена предыдущим вызовом метода setTimeout.

Метод:

frame, window

Описание:

Смотрите описание метода setTimeout

Смотрите также:

  • метод setTimeout

Метод click

Имитирует щелчок мыши на выбранном элементе формы.

Синтаксис:

  1.  buttonName.click()

  2.  radioName[index].click()

  3.  checkboxName.click()
buttonName любое значение атрибута NAME объектов button, reset или submit или элемент массива elements.
radioName значение атрибута NAME объекта radio или элемент массива elements.
index целое число, представляющее кнопку radio в объекте radio.
checkboxName любое значение атрибута NAME объекта checkbox или элемент массива elements.

Метод:

button, checkbox, radio, reset, submit.

Описание:

Результат действия метода click изменяется в зависимости от вызываемого элемента:
  • для button, reset и submit выполняется одинаковое действие - нажатие кнопки.
  • для radio - выбор кнопки radio.
  • для checkbox - отметка галочкой checkbox и установка значения на on.

Метод close (объект document)

Закрывает поток вывода и завершает вывод данных в рабочую область Navigator'а для отображения.

Синтаксис:

document.close()

Метод:

document

Описание:

Метод close закрывает поток вывода, открытый методом document.open(). Если поток был открыт для рабочей области Navigator'а, метод close завершает вывод содержимого потока на экран. Таги стиля шрифта, такие как <BIG> и <CENTER>, автоматически закрывают поток вывода. Метод close также останавливает "meteor shower" в иконе Navigator'а и отображает "Document: Done" в строке состояния.

Смотрите также:

  • методы open, write, writeln.

Метод close (объект window)

Изменен в Navigator 3.0.
Закрывает указанное окно.

Синтаксис:

windowReference.close()
windowReference ссылка на окно, как описано в объекте window.

Метод:

window

Описание:

Метод close закрывает указанное окно. Если вы объявляете close без указания windowReference, то JavaScript закрывает текущее окно.
В событиях вы должны указывать window.close() вместо обычно используемого close(). Объявление close() без определения имени объекта равносильно document.close().

Смотрите также:

  • метод open

Метод confirm

Отображает диалоговое окно с указанным сообщением и кнопками OK и Cancel.

Синтаксис:

confirm("message")
message любая строка или свойство существующего объекта.

Метод:

window

Описание:

Метод confirm используется для принятия пользователем решения, требующего выбора OK или Cancel. Аргумент message определяет сообщение, которое требует решения пользователя. Метод confirm возвращает true, если пользователь выбрал OK, и false, если пользователь выбрал Cancel.
Хотя confirm является методом объекта window, вам не нужно указывать windowReference при его вызове. Например, windowReference.confirm() является необязательным.

Смотрите также:

  • методы alert, prompt

Метод cos

Возвращает косинус числа.

Синтаксис:

Math.cos(number)
number числовое выражение, представляющее собой размер угла в радианах или свойство существующего объекта.

Метод:

Math

Описание:

Метод cos возвращает числовое значение между -1 и 1, которое представляет собой косинус угла.

Смотрите также:

  • методы acos, asin, atan, sin, tan.

Функция escape

Возвращает ASCII значение аргумента, закодированного в ISO Latin-1.

Синтаксис:

escape("string")
string не буквенно-числовая строка в ISO Latin-1 кодировке или свойство существующего объекта.

Описание:

Функция escape не является методом, связанным с любым объектом, но является частью самого языка.
Значение, возвращаемое функцией escape, является строкой вида "%xx", где xx является ASCII кодировкой символа в аргументе. Если аргументом функции escape является буквенно-числовым символом, то функция escape возвращает тот же символ.

Смотрите также:

  • функцию unescape.

Функция eval

Функция eval выполняет строку-аргумент и подставлает полученное значение вместо себя.

Синтаксис:

eval("string")
string любая строка, представляющая собой JavaScript выражение, команду или последовательность команд. Выражение может включать переменные и свойства существующего объекта.

Описание:

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

Метод exp

Возвращает enumber, где number является аргументом, а e является экспонентой, основанием натурального логарифма.

Синтаксис:

Math.exp(number)
number любое числовое выражение или свойство существующего объекта.

Метод:

Math

Смотрите также:

  • методы log, pow.

Метод fixed

Вызывает строку, отображаемую моноширинным шрифтом, как если установить ей таг <TT>.

Синтаксис:

stringName.fixed()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод fixed используется с методами write и writeln.

Метод floor

Возвращает ближайшее целое числа, округленного в меньшую сторону или равное числу.

Синтаксис:

Math.floor(number)
number любое числовое выражение или свойство существующего объекта.

Метод:

Math

Смотрите также:

  • метод ceil.

Метод focus

Изменен в Navigator 3.0.
Устанавливает фокус на определенный объект.

Синтаксис:

1. password.focus()
2. select.focus()
3. textName.focus()
4. textareaName.focus()
password любое значение атрибута NAME объекта password или элемент массива elements.
select любое значение атрибута NAME объекта select или элемент массива elements.
textName любое значение атрибута NAME объекта text или элемент массива elements.
textareaName любое значение атрибута NAME объекта textarea или элемент массива elements.

Метод:

password, select, text, textarea.

Описание:

Метод focus используется для установки фокуса на указанный элемент формы. Вы можете затем программно ввести значение в элемент или позволить пользователю ввести значение.

Смотрите также:

  • методы blur, select.

Метод fontcolor

Вызывает строку, отображаемую установленным цветом, как если поместить ее в таг <FONT COLOR=color>.

Синтаксис:

stringName.fontcolor(color)
stringName любая строка или свойство существующего объекта.
color строка или свойство существующего объекта, определяющая цвет как шестиразрядное шестнадцатиричное число (RGB) или как одно из строковых названий в списке Color Value.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод fontcolor используется с методами write и writeln.
Если вы определяете color как шестиразрядное шестнадцатиричное число вы должны использовать формат rrggbb.
Метод fontcolor анулирует значение, установленное в свойстве fgColor.

Метод fontsize

Вызывает строку, отображаемую установленным размером шрифта, как если поместить ее в таг <FONT SIZE=size>.

Синтаксис:

stringName.fontsize(size)
stringName любая строка или свойство существующего объекта.
size целое число от 1 до 7 или строка, представляющая собой целое со знаком (+ или -) от 1 до 7, или свойство существующего объекта.

Описание:

Для форматирования и отображения строки в документе метод fontsize используется с методами write и writeln.
Когда вы определяете size как целое, вы устанавливаете размер stringName в один из семи специфицированных размеров. Когда вы определяете size как "-2", вы устанавливаете размер шрифта stringName относительно размера, установленного в таге .

Смотрите также:

  • методы big, small.

Метод forward

Загружает следующий URL в списке посещенных URL'ей.

Синтаксис:

history.forward()

Метод:

history

Описание:

Этот метод выполняет действие равносильное выбору пользователем кнопки Forward в окне Navigator'а. Метод forward также равносилен history.go(1).

Смотрите также:

  • методы back, go.

Метод getDate

Возвращает число месяца для указанной даты.

Синтаксис:

dateObjectName.getDate()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getDate, является целым числом от 1 до 31.

Смотрите также:

  • метод setDate

Метод getDay

Возвращает день недели для указанной даты.

Синтаксис:

dateObjectName.getDay()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getDay, является целым числом, соответствующим дню недели: ноль для воскресенья, один для понедельника, два для вторника и так далее.

Метод getHours

Возвращает часы для указанной даты.

Синтаксис:

dateObjectName.getHours()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getHours, является целым числом от 0 до 23.

Смотрите также:

  • метод setHours.

Метод getMinutes

Возвращает минуты для указанной даты.

Синтаксис:

dateObjectName.getMinutes()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getMinutes, является целым числом от 0 до 59.

Смотрите также:

  • метод setMinutes.

Метод getMonth

Возвращает месяц для указанной даты.

Синтаксис:

dateObjectName.getMonth()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getMonth, является целым числом от 0 до 11. Ноль соответствует январю, один - февралю и так далее.

Смотрите также:

  • метод setMonth.

Метод getSeconds

Возвращает секунды в текущем времени.

Синтаксис:

dateObjectName.getSeconds()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getSeconds, является целым числом от 0 до 59.

Смотрите также:

  • метод setSeconds.

Метод getTime

Возвращает числовое значение, соответствующее времени для указанной даты.

Синтаксис:

dateObjectName.getTime()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое методом getTime, является числом миллисекунд, начиная с 1 января 1970 00:00:00. Вы можете использовать этот метод для назначения даты и времени другому объекту date.

Смотрите также:

  • метод setTime.

Метод getTimezoneOffset

Возвращает смещение временной зоны в минутах относительно гринвичского меридиана.

Синтаксис:

dateObjectName.getTimezoneOffset()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Смещение временной зоны является разницей между местным временем и GMT (гринвичским временем). Сезонное время (зимнее, летнее) не дает возможности говорить об этом смещении как о константе.

Метод getYear

Возвращает год для указанной даты.

Синтаксис:

dateObjectName.getYear()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Значение, возвращаемое getYear, равно году минус 1900. Например, если год равен 1976, то возвращаемое значение равно 76.

Смотрите также:

  • метод setYear.

Метод go

Загружает URL из списка посещенных URL'ей.

Синтаксис:

history.go(delta | location)
delta целое число или свойство существующего объекта, представляющее собой относительную позицию в списке посещенных URL'ей.
location строка или свойство существующего объекта, представляющая собой URL или его часть из списка посещенных URL'ей.

Метод:

history

Описание:

Метод go позволяет перейти на адрес, содержащийся в списке посещенных URL'ей, который указан вами в качестве аргумента метода go. Вы можете посмотреть этот список, выбрав History в меню Window. Последние 10 позиций списка также отображаются в меню Go.
Аргумент delta может быть положительным и отрицательным числом. Если delta больше нуля, то метод go переходит на URL вперед в списке посещенных URL'ей; в противном случае переход осуществляется на URL назад. Если delta равна 0, то Navigator перезагружает текущую страницу.
Аргумент location является строкой. location выбирает для загрузки ближайший адрес в списке посещенных URL'ей, содержащий подстроку location, указанную вами в качестве аргумента. Каждая часть URL содержит определенную информацию. Смотрите объект location, где описаны компоненты URL.

Смотрите также:

  • методы back, forward.

Метод indexOf

Возвращает индекс позиции впервые встреченного искомого значения в вызванном объекте string. Поиск начинается с fromIndex.

синтаксис:

stringName.indexOf(searchValue, [fromIndex])
stringName любая строка или свойство существующего объекта.
searchValue строка или свойство существующего объекта, представляющая собой искомое значение.
fromIndex место в вызванной строке, с которого начинается поиск. Это может быть любое целое число от 0 до stringName.length-1 или свойство существующего объекта.

Метод:

string

Описание:

Символы в строке индексируются слева направо. Индекс первого символа равен 0, индекс последнего - stringName.length-1.
Если вы не указываете значение fromIndex, JavaScript принимает по умолчанию 0. Если searchValue не найден, JavaScript возвращает -1.

Смотрите также:

  • методы charAt, lastIndexOf.

Функция isNaN

Изменена в Navigator 3.0.
На UNIX платформах проверяет аргумент, является ли он "NaN" (не числом).

Синтаксис:

isNaN(testValue)
testValue значение, которое вы хотите проверить.

Описание:

Функция isNaN является встроенной функцией JavaScript. Она не является методом, связанным с любым объектом, но является частью самого языка. Функция isNaN применяется только на UNIX платформах.
На всех платформах, за исключением Windows, функции parseFloat и parseInt возвращают "NaN", когда они принимают нечисловое значение. Значение "NaN" не является числом в любом случае. Вы можете вызывать функцию NaN для того, чтобы определить является ли результат parseFloat или parseInt "NaN". Если над "NaN" совершаются арифметические операции, то их результатами также будет "NaN".
Функция isNaN возвращает true или false.

Смотрите также:

  • функции parseFloat, parseInt.

Метод italics

Вызывает строку, отображаемую курсивом, как если установить ей таг <I>.

Синтаксис:

stringName.italics()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод italics используется с методами write или writeln.

Смотрите также:

  • методы blink, bold, strike.

Метод lastIndexOf

Возвращает индекс впервые встреченного искомого значения в вызванном объекте string. Поиск по строке осуществляется в обратном направлении, начиная с fromIndex.

Синтаксис:

stringName.lastindexOf(searchValue, [fromIndex])
stringName любая строка или свойство существующего объекта.
searchValue строка или свойство существующего объекта, представляющая собой искомое значение.
fromIndex место в вызванной строке, с которого начинается поиск. Это может быть любое целое число от 0 до stringName.length-1 или свойство существующего объекта.

Метод:

string

Описание:

Символы в строке индексируются слева направо. Индекс первого символа равен 0, индекс последнего - stringName.length-1.
Если вы не указываете значение fromIndex, JavaScript принимает по умолчанию stringName.length-1 (конец строки). Если searchValue не найден, JavaScript возвращает -1.

Смотрите также:

  • методы charAt, IndexOf.

Метод link

Создает гипертекстовую ссылку HTML, по которой можно перейти на другой URL.

Синтаксис:

linkText.link(hrefAttribute)

Метод:

string

Описание:

Для создания и отображения гипертекстовой ссылки в документе метод link используется с методами write или writeln. Создайте ссылку методом link, затем вызовите write или writeln для отображения ссылки в документе.
В синтаксисе строка linkText представляет собой текст, который увидит пользователь. Строка hrefAttribute представляет собой атрибут HREF тага <A>, это будет целевой URL. Каждая часть URL содержит определенную информацию. Смотрите объект location, где описаны компоненты URL.
Ссылки, созданные методом link, становятся элементами массива links.

Смотрите также:

  • метод anchor.

Метод log

Возвращает натуральный логарифм числа (по основанию e).

Синтаксис:

Math.log(number)
number любое положительное числовое выражение или свойство существующего объекта.

Метод:

Math

Описание:

Если значение number находится за пределами диапазона, возвращенное значение всегда будет -1.797693134862316e+308.

Смотрите также:

  • методы exp, pow.

Метод max

Возвращает большее число из двух.

Синтаксис:

Math.max(number1, number2)
number1 и number2 любые числовые аргументы или свойства существующих объектов.

Метод:

Math

Смотрите также:

  • метод min.

Метод min

Возвращает меньшее число из двух.

Синтаксис:

Math.min(number1, number2)
number1 и number2 любые числовые аргументы или свойства существующих объектов.

Метод:

Math

Смотрите также:

  • метод max.

Метод open (объект document)

Открывает поток для получения вывода методами write и writeln.

Синтаксис:

document.open(["mimeType"])
mimeType устанавливает любой из следующих типов документа:
text/html
text/plain
image/gif
image/jpeg
image/x-bitmap
plug-In
plug-In любой составной plug-in MIME тип, поддерживаемый Netscape'ом.

Метод:

document

Описание:

Метод open открывает поток для получения вывода методами write и writeln. Если mimeType является текстом или картинкой, то поток открыт в рабочую область Navigator'а; иначе, поток открыт на plug-in. Если документ уже существует в целевом окне, то метод open очищает его.
Для закрытия потока используйте метод document.close(). Метод close вызывает текст или картинку, которые были отправлены в рабочую область Navigator'а для отображения. После использования document.close(), введите document.open() снова, когда вы захотите начать вывод другого потока.
mimeType является необязательным аргументом, определяющим тип документа. Если вы не указываете mimeType, то метод open принимает по умолчанию text/html.
Описание mimeType:
  • text/html определяет текст, содержащий ASCII текст в HTML формате.
  • text/plain определяет текст, содержащий ASCII текст с символами конца строки, для ограничения отображаемых строк.
  • image/gif определяет документ с закодированными байтами, содержащий GIF заголовок и размеры в пикселях.
  • image/jpeg определяет документ с закодированными байтами, содержащий JPEG заголовок и размеры в пикселях.
  • image/x-bitmap определяет документ с закодированными байтами, содержащий bitmap заголовок и размеры в пикселях.
  • plug-in загружает определенный plug-in и использует его как место назначения для методов write и writeln. Например, "x-world/vrtml" загружет VR Scout VRML plug-in из Chaco Communications, а "aplication/x-director" загружает Macromedia Shockware plug-in.

Смотрите также:

  • методы close, write, writeln.

Метод open (объект window)

Открывает новое окно web-броузера.

Синтаксис:

[windowVar=][window].open("URL", "windowName", ["windowFeatures"])
windowVar имя нового окна. Эта переменная используется при ссылках на свойства, методы и контейнеры окна.
URL определяет URL, открываемый в новом окне. Смотрите объект location, где описаны компоненты URL.
windowName имя окна, используемое в атрибуте TARGET тага <FORM> или <A>. windowName может содержать только буквенно-цифровые символы или символ подчеркивания (_).
windowFeatures список через запятую любых из следующих опций или значений:
toolbar[=yes | no] | [=1 | 0]
location[=yes | no] | [=1 | 0]
directoties[=yes | no] | [=1 | 0]
status[=yes | no] | [=1 | 0]
menubar[=yes | no] | [=1 | 0]
scrollbars[=yes | no] | [=1 | 0]
resizable[=yes | no] | [=1 | 0]
width=pixels
height=pixels
Вы можете использовать любой набор этих опций. Опции разделяются запятой. Не делайте пробелов между опциями.
pixels положительное целое число, определяющее размеры окна в пикселях.

Метод:

window

Описание:

Метод open открывает новое окно web-броузера клиента, что равносильно выбору New WebBrowser из меню File Navigator'а. Аргумент URL определяет URL, содержащийся в новом окне. Если URL является пустой строкой, то создастся пустое окно.
В событиях вы должны указывать window.open() вместо обычно используемого open(). Объявление open() без определения имени объекта равносильно document.open().
windowFeatures является необязательным списком перечисленных через запятую опций для нового окна. Булевы опции windowFeatures принимают значение true, если они определены без значений, или как yes или 1. Например, open("", "messageWindow", "toolbar") и open("", "messageWindow", "toolbar=1") как в первом, так и во втором случае опция toolbar принимает значение true. Если windowName не определяет существующего окна и вы не определяете windowFeatures, то все булевы опции windowFeatures принимают по умолчанию значение true. Если вы определяете любую из опций windowFeatures, то все остальные опции принимают значение false, если вы их не определите дополнительно.
Описание windowFeatures:
  • toolbar создает стандартные рабочие инструменты Navigator'а, с такими кнопками как "Back" и "Forward".
  • location создает поле ввода Location.
  • directories создает кнопки стандартных директорий Navigator'а, такие как "What's New" и "What's Coll".
  • status создает строку состояния внизу окна.
  • menubar создает меню вверху окна.
  • scrollbars создает горизонтальную и вертикальную прокрутки, когда документ больше, чем размер окна.
  • resizable позволяет пользователю изменять размер окна.
  • width определяет ширину окна в пикселях.
  • height определяет высоту окна в пикселях.

Смотрите также:

  • метод close.

Метод parse

Возвращает количество миллисекунд в строковом представлении даты, начиная с 1 января 1970 00:00:00, по местному времени.

Синтаксис:

Date.parse(dateString)

Метод:

Date

Описание:

Метод parse выдает дату в строковом представлении (например, "Dec 25, 1995") и возвращает количество миллисекунд, начиная с 1 января 1970 00:00:00 (по местному времени). Эта функция используется для установки значений даты, основанных на строковом значении, например, в сочетании с методом setTime и объектом Date.
Полученная строка представляет собой время, parse возвращает значение времени. Она принимается в стандартном синтаксисе даты IETF: "Mon, 25 Dec 1995 13:30:00 GMT". Она понимает континентальную US временную зону, но в основном, используется временная зона смещения, например "Mon, 25 Dec 1995 13:30:00 GMT+0430" (4 часа, 30 минут западнее Гринвича). Если вы не указали временной зоны, принимается местная временная зона. GMT и UTC считаются эквивалентными.
Так как функция parse является статическим методом Date, вы всегда используете ее как Date.parse(), а не как метод созданного вами объекта date.

Смотрите также:

  • метод UTC

Функция parseFloat

Анализирует строковый аргумент и возвращает число с плавающей точкой.

Синтаксис:

parseFloat(string)
string строка, представляющая собой значение, которое вы хотите проанализировать.

Описание:

Функция parseFloat является встроенным объектом JavaScript. Она не является методом, связанным с любым объектом, но является частью самого языка.
Функция parseFloat анализирует строку-аргумент и возвращает число с плавающей точкой. Если встреченный им символ отличается от знака (+ или -), цифры (0-9), десятичной точки или экспоненты, то он возвращает значение до этой точки, игнорируя этот символ и все последующие символы.
Если первый символ не может быть конвертирован в число, parseFloat возвращает одно из следующих значений:
  • "пусто" на Windows платформах.
  • "NaN" на любых других платформах указывает на то, что значение не является числом.

Смотрите также:

  • методы isNaN, parseInt.

Функция parseInt

Анализирует строковый аргумент и возвращает целое число, определенное как основание.

Синтаксис:

parseInt(string [,radix])
string строка, которая представляет собой значение, которое вы хотите проанализировать.
radix целое число, представляющее собой основание, возвращаемого значения.

Описание:

Функция parseFloat является встроенным объектом JavaScript. Она не является методом, связанным с любым объектом, но является частью самого языка.
Функция parseFloat анализирует его первый аргумент-строку и пытается возвратить целое число, определенное как основание. Например, основание 10 означает перевод в десятичное число, 8 - восьмеричное, 16 - шестнадцатиричное, и т.д.
Если parseInt в указанном основании встречает символ, не являющийся числом, то он пропускает его и все следующие символы и возвращает целочисленное значение разобранное до точки. ParseInt усекает числа до целочисленных значений.
Если основание не определено или определено как 0, JavaScript принимает следующее:
  • если ввод string начинается с "0x", то основание равно 16 (шестнадцатиричное).
  • если ввод string начинается с "0", то основание равно 8 (восьмиричное).
  • если ввод string начинается с любого другого значения, то основание равно 10 (десятичное).
  • если первый символ не может быть конвертирован в число, parseFloat возвращает одно из следующих значений:
    • "пусто" на Windows платформах.
    • "NaN" на любых других платформах указывает на то, что значение не является числом.

Для арифметических целей значение "NaN" не явяляется числом в любом случае. Вы можете вызвать функцию isNaN для того, чтобы определить является ли результат parseInt "NaN". Если "NaN" применить в арифметических операциях, то их результатами также будут "NaN".

Смотрите также:

  • функции isNaN, parseFloat.

Метод pow

Возвращает base в степени exponent, т.е. baseexponent.

Синтаксис:

Math.pow(base, exponent)
base числовое выражение или свойство существующего объекта.
exponent числовое выражение или свойство существующего объекта. Если результат может оказаться недопустимым значением (например, pow(-1, 0.5), то возвращенное значение равно нулю.

Метод:

Math

Смотрите также:

  • методы exp, log.

Метод prompt

Отображает диалоговое окно с сообщением и полем ввода.

Синтаксис:

prompt(message, [inputDefault])
message любая строка или свойство существующего объекта; строка отображается как сообщение.
inputDefault строка, целое число или свойство существующего объекта, представляющая собой значение вводимое в поле по умолчанию.

Метод:

window

Описание:

Метод prompt используется для отображения диалогового окна, требующего ввода текста пользователем. Если вы не определяете первоначальное значение для inputDefault, то диалоговое окно отображает значение <undefined>.
Хотя prompt является методом объекта window, вам не нужно определять windowReference, при его вызове. Например, windowReference.prompt() является не обязательным.

Смотрите также:

  • методы alert, confirm.

Метод random

Изменен в Navigator 3.0.
Возвращает случайное число между нулем и единицей. Этот метод применяется только на UNIX платфомах.

Синтаксис:

Math.random()

Метод:

Math

Метод setDate

Устанавливает число месяца для указанной даты.

Синтаксис:

dateObjectName.setDate(dayValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
dayValue целое число от 1 до 31 или свойство существующего объекта, представляющего собой число месяца.

Метод:

Date

Смотрите также:

  • метод getDate.

Метод setHours

Устанавливает часы для указанной даты.

Синтаксис:

dateObjectName.setHours(hoursValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
hoursValue целое число от 0 до 23 или свойство существующего объекта, представляющее собой часы.

Метод:

Date

Смотрите также:

  • метод getHours.

Метод setMinutes

Устанавливает минуты для указанной даты.

Синтаксис:

dateObjectName.setMinutes(minutesValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
minutesValue целое число от 0 до 59 или свойство существующего объекта, представляющее собой минуты.

Метод:

Date

Смотрите также:

  • метод getMinutes.

Метод setMonth

Устанавливает месяц для указанной даты.

Синтаксис:

dateObjectName.setMonth(month Value)
dateObjectName любое имя объекта date или свойство существующего объекта.
monthValue целое число от 0 до 11 (представляющее собой месяцы с января по декабрь) или свойство существующего объекта.

Метод:

Date

Смотрите также:

  • метод getMonth.

Метод setSeconds

Устанавливает секунды для указанной даты.

Синтаксис:

dateObjectName.setSeconds(secondsValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
secondsValue целое число от 0 до 59 или свойство существующего объекта.

Метод:

Date

Смотрите также:

  • метод getSeconds.

Метод setTime

Устанавливает значение объекта date.

Синтаксис:

dateObjectName.setTime(timevalue)
dateObjectName любое имя объекта date или свойство существующего объекта.
timevalue целое число или свойство существующего объекта, представляющее собой количество миллисекунд, начиная с 1 января 1970 00:00:00.

Метод:

Date

Описание:

Метод setTime используется для добавления даты и времени другому объекту.

Смотрите также:

  • метод getTime.

Метод setTimeout

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

Синтаксис:

timeoutID=setTimeout(expression, msec)
timeoutID идентификатор, который используется только для окончания выполнения, используя метод clearTimeout.
expression строковое выражение или свойство существующего объекта.
msec числовое значение, числовой ряд или свойство существующего объекта в миллисекундах.

Метод:

frame, window

Описание:

Метод setTimeout выполняет выражение после установленного количества времени. Он не выполняет выражение многократно. Например, если метод setTimeout установлен на 5 секунд, то выражение выполнится через 5 секунд, но не каждые 5 секунд.

Смотрите также:

  • метод clearTimeout.

Метод setYear

Устанавливает год для указанной даты.

Синтаксис:

dateObjectName.setYear(yearValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
timevalue целое число больше чем 1900 или свойство существующего объекта.

Метод:

Date

Смотрите также:

  • метод getYear.

Метод sin

Возвращает синус числа.

Синтаксис:

Math.sin(number)
number числовое выражение или свойство существующего объекта, представляющее собой величину угла в радианах.

Метод:

Math

Описание:

Метод sin возвращает числовое значение между -1 и 1, представляющее собой синус угла.

Смотрите также:

  • методы acos, asin, atan, cos, tan.

Метод small

Выводит строку, отображаемую маленьким шрифтом, как если установить ей таг <SMALL>.

Синтаксис:

stringName.small()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод small используется с методами write или writeln.

Смотрите также:

  • методы big, fontsize.

Метод sqrt

Возвращает квадратный корень числа.

Синтаксис:

Math.sqrt(number)
number любое неотрицательное числовое выражение или свойство существующего объекта.

Метод:

Math

Описание:

Если значение number находится за пределами данного диапазона, возвращенное значение всегда будет 0.

Метод strike

Выводит строку, отображаемую как перечеркнутый текст, как если установить ей таг <STRIKE>.

Синтаксис:

stringName.strike()

stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод strike используется с методами write или writeln.

Смотрите также:

  • методы blink, bold, italics.

Метод sub

Выводит строку, отображаемую как нижний индекс, как если установить ей таг <SUB>.

Синтаксис:

stringName.sub()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод sub используется с методами write или writeln.

Смотрите также:

  • методы sup.

Метод submit

Передает форму.

Синтаксис:

formName.submit()
formName любая строка или свойство существующего объекта.

Метод:

form

Описание:

Метод submit передает указанную форму. Он выполняет такое же действие как кнопка submit.
Метод submit используется для передачи данных http-серверу. Метод submit возвращает данные, используя методы "get" или "post", определенные в свойстве method.

Смотрите также:

  • объект submit.
  • свойство onSubmit.

Метод substring

Возвращает подстроку объекта string.

Синтаксис:

stringName.substring(indexA, indexB)
stringName любая строка или свойство существующего объекта.
indexA любое целое число от 0 до stringName.length-1 или свойство существующего объекта.
indexB любое целое число от 0 до stringName.length-1 или свойство существующего объекта.

Метод:

string

Описание:

Символы в строке индексируются слева направо. Индекс первого символа равен 0, индекс последнего - stringName.length-1.
Если indexA меньше чем indexB, то метод substring возвращает подстроку, начиная с символа indexA и заканчивая символом перед indexB. Если indexA больше чем indexB, то метод substring возвращает подстроку, начиная с символа indexB и заканчивая символом перед indexA. Если indexA равен indexB, то метод substring возвращает пустую строку.

Метод sup

Выводит строку, отображаемую как нижний индекс, как если установить ей таг <SUP>.

Синтаксис:

stringName.sup()
stringNameлюбая строка или свойство существующего объекта.

Метод:

string

Описание:

Для форматирования и отображения строки в документе метод sup используется с методами write или writeln.

Смотрите также:

  • методы sub.

Метод tan

Возвращает тангенс числа.

Синтаксис:

Math.tan(number)
number числовое выражение, представляющее собой величину угла в радианах, или свойство существующего объекта.

Метод:

Math

Описание:

Метод tan возвращает числовое значение, представляющее собой тангенс угла.

Смотрите также:

  • методы acos, asin, atan, cos, sin.

Метод toGMTString

Переводит дату в строку, используя среднее гринвичское время (GMT).

Синтаксис:

dateObjectName.toGMTString()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Точный формат значения возвращаемого toGMTString зависит от платформы.

Смотрите также:

  • методы toLocaleString.

Метод toLocaleString

Переводит дату в строку, используя местный часовой пояс.

Синтаксис:

dateObjectName.toLocaleString()
dateObjectName любое имя объекта date или свойство существующего объекта.

Метод:

Date

Описание:

Если вы для перевода даты используете toLocaleString, помните, что различные locales собирают строку в различных путях. Используйте методы getHours, getMinutes, getSeconds для получения более переносимых результатов.

Смотрите также:

  • методы toGMTString.

Метод toLowerCase

Возвращает значение вызванной строки, переведенной в нижний регистр.

Синтаксис:

stringName.toLowerCase()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Метод toLowerCase возвращает значение stringName, переведенное в нижний регистр. toLowerCase не изменяет значения stringName.

Смотрите также:

  • методы toUpperCase.

Метод toUpperCase

Возвращает значение вызванной строки, переведенной в верхний регистр.

Синтаксис:

stringName.toUpperCase()
stringName любая строка или свойство существующего объекта.

Метод:

string

Описание:

Метод toUpperCase возвращает значение stringName, переведенное в верхний регистр. toUpperCase не изменяет значения stringName.

Смотрите также:

  • методы toLowerCase.

Функция unescape

Возвращает ASCII строку для указанного значения.

Синтаксис:

unescape("string")
string строка или свойство существующего объекта, содержащие символы в любой из следующих форм:
  • "%integer", где integer - число между 0 и 255 (десятичное)
  • "hex", где hex - число между 0x0 и 0xFF (шестнадцатиричное)

Описание:

Функция unescape не является методом, связанным с каким-либо объектом, но является частью самого языка. Строка, возвращаемая функцией unescape, является рядом символов в ISO Latin-1 кодировке.

Смотрите также:

  • функцию escape.

Метод UTC

Возвращает количество миллисекунд в объект date, начиная с 1 января 1970 00:00:00, GMT.

Синтаксис:

Date.UTC(year, month, day, [, hrs] [, min] [, sec])
year год после 1990.
month месяц между 0-11.
day день месяца между 1-31.
hrs часы между 0-23.
min минуты между 0-59.
sec секунды между 0-59.

Метод:

Date

Описание:

UTC берет параметры даты, разделенные запятой, и возвращает количество миллисекунд, начиная с 1 января 1970 00:00:00, GMT.
Так как UTC является статическим методом Date, используйте его как Date.UTC(), а не как метод созданного вами объекта date.

Смотрите также:

  • метод parse.

Метод write

Пишет одно или более HTML выражений в документ в указанном окне.

Синтаксис:

document.write(expression1 [,expression2], ... [,expressionN])
с expression1 по expressionN любое JavaScript выражение или свойство существующего объекта.

Метод:

document

Описание:

Метод write отображает любое количество выражений в окне документа. Вы можете определить любое JavaScript выражение методом write, включая числовое, строковое или логическое.
Метод write является таким же как метод writeln, но метод write не добавляет символа перевода на новую строку в конец выходной информации.
Метод write используется внутри тага <SCRIPT> или внутри события. События выполняются после закрытия документа, поэтому метод write по умолчанию откроет новый документ с mimeType text/html, если вы не укажете метод document.open() в событии.

Смотрите также:

  • методы close, open, writeln.

Метод writeln

Пишет одно или более HTML выражений в документ в указанном окне, добавляя символ перевода на новую строку в конец выходной информации.

Синтаксис:

document.writeln(expression1 [,expression2], ... [,expressionN])
с expression1 по expressionN любое JavaScript выражение или свойство существующего объекта.

Метод:

document

Описание:

Метод writeln отображает любое количество выражений в окне документа. Вы можете определить любое JavaScript выражение методом write, включая числовое, строковое или логическое.
Метод writeln является таким же как метод write, но метод writeln добавляет символ перехода на новую строку в конец выходной информации. HTML игнорирует символ новой строки, за исключением определенных тагов, таких как <PRE>.
Метод writeln используется внутри любого тага <SCRIPT> или внутри события. События выполняются после закрытия документа, поэтому метод writeln по умолчанию откроет новый документ с mimeType text/html, если вы не укажете метод document.open() в событии.

Смотрите также:

  • методы close, open, write.


Обработчики событий JavaScript

Наталия Бельтикова, Ирина Кузина (РНЦ "Курчатовский институт")

onBlur | onMouseOver
onChange | onSelect
onClick | onSubmit
onFocus | onUnload
onLoad |

Обработчик событий onBlur

Изменен в Navigator 3.0.
Событие blur происходит когда поля формы select, text или textarea теряют фокус. Обработчик событий onBlur выполняет программу JavaScript, когда происходит событие blur.
Синтаксис onBlur смотрите в описании соответствующих объектов.

Обработчик событий:

select, text, textarea

Смотрите также:

  • обработчики событий onChange, onFocus

Обработчик событий onChange

Событие change происходит, когда поля формы select, text или textarea теряют фокус и их значения изменяются. Обработчик событий onChange выполняет программу JavaScript, когда происходит событие change.
Обработчик событий onChange используется для подтверждения данных после их изменения пользователем.
Синтаксис onChange смотрите в описании соответствующих объектов.

Обработчик событий:

select, text, textarea

Смотрите также:

  • обработчики событий onBlur, onFocus

Обработчик событий onClick

Событие click происходит при щелчке мышью на объекте формы. Обработчик событий onClick выполняет программу JavaScript, когда происходит событие click.
Синтаксис onClick смотрите в описании соответствующих объектов.

Обработчик событий:

button, checkbox, radio, link, reset, submit

Обработчик событий onFocus

Изменен в Navigator 3.0.
Событие focus происходит, когда поле получает фокус ввода с клавиатуры или щелчком мыши. Выбор результатов внутри поля связано с событием select, но не с событием focus. Обработчик событий onFocus выполняет программу JavaScript, когда происходит событие focus.
Синтаксис onFocus смотрите в описании соответствующих объектов.

Обработчик событий:

select, text, textarea

Смотрите также:

  • обработчики событий onBlur, onChange

Обработчик событий onLoad

Событие load происходит, когда Navigator завершает загрузку окна или всех фреймов внутри тага <FRAMESET> . Обработчик событий onLoad выполняет программу JavaScript, когда происходит событие load.
Обработчик событий onLoad используется внутри тагов <BODY> или <FRAMESET>, например, <BODY onLoad="...">.
В отношении <FRAMESET> и <FRAME> событие onLoad, размещенное внутри фрейма в таге <BODY>, выполняется перед событием onLoad, размещенном внутри <FRAMESET> в таге <FRAMESET>

Обработчик событий:

window

Смотрите также:

  • обработчик событий onUnload

Обработчик событий onMouseOver

Событие mouseOver происходит каждый раз, когда курсор мыши попадает на объект. Обработчик событий onMouseOver выполняет программу JavaScript, когда происходит событие mouseOver.
Вы должны возвращать true внутри обработчика событий, если вы хотите использовать свойства status или defaultStatus с обработчиком событий onMouseOver.
Синтаксис onMouseOver смотрите в описании соответствующих объектов.

Обработчик событий:

link

Обработчик событий onSelect

Событие select происходит, когда пользователь выбирает некоторый текст внутри поля text или textarea. Обработчик событий onSelect выполняет программу JavaScript, когда происходит событие select.
Синтаксис onSelect смотрите в описании соответствующих объектов.

Обработчик событий:

text, textarea

Обработчик событий onSubmit

Изменен в Navigator 3.0.
Событие submit происходит, когда пользователь отправляет форму на Web-сервер. Обработчик событий onSubmit выполняет программу JavaScript, когда происходит событие submit.
Вы можете использовать обработчик событий onSubmit для остановки передачи данных формы; для этого используется выражение return, которое возвращает false в обработчик событий. Любое другое возвращенное значение отправляет форму.
Синтаксис onSubmit смотрите в описании соответствующих объектов.

Обработчик событий:

form

Смотрите также:

  • объект submit
  • метод submit

Обработчик событий onUnload

Событие unload происходит, когда вы выходите из документа. Обработчик событий onUnload выполняет программу JavaScript, когда происходит событие unload.
Обработчик событий onLoad используется внутри тагов <BODY> или <FRAMESET>, например, <BODY onUnload="...">.
В отношении <FRAMESET> и <FRAME> событие onUnload, размещенное внутри фрейма в таге <BODY>, происходит перед событием onUnload, размещенного внутри <FRAMESET> в таге <FRAMESET>.

Обработчик событий:

window

Смотрите также:

  • обработчик событий onLoad


Объекты JavaScript

Наталия Бельтикова, Ирина Кузина (РНЦ "Курчатовский институт")

anchor (массив anchors) | location
button | Math
checkbox | navigator
Date | password
document | radio
массив elements | reset
form (массив forms) | string
frame (массив frames) | submit
hidden | text
history | textarea
link (массив links) | window

Объект anchor (массив anchors)

Фрагмент текста, который может быть помещен в гиперссылку.

Синтаксис:

Для определения anchor используется стандартный HTML синтаксис.
<A [HREF=locationorURL]
NAME="anchorName"
[TARGET="windowName"]>
anchorText
</a>

HREF=locationorURL идентифицирует назначение якоря или URL. Если этот атрибут представлен, то объект anchor также является объектом link.
NAME="anchorName" определяет таг, который является доступной гипертекстовой ссылкой внутри текущего документа.
TARGET="windowName" определяет окно, в которое будет загружаться ссылка. Этот атрибут имеет смысл, только если представлен HREF=locationorURL. Смотрите также link.
anchorText определяет текст, отображаемый якорем.

Вы можете также определить якорь, используя метод anchors.

Свойство:

  • document

Описание:

Если объект anchor является также объектом link, то объект входит в массивы anchors и links.

Массив anchors

Вы можете ссылаться на объекты anchor в вашей программе, используя массив anchors. Этот массив содержит запись для каждого тага <a>, содержащего атрибут NAME по порядку встречаемости в документе. Например, если документ содержит три поименованных якоря, то эти якоря представлены как document.anchor[0], document.anchor[1], document.anchor[2].
Использование массива anchors:
  1. document.anchors[index]
  2. document.anchors.length

index целое число, представляющее якорь в документе.

Для получения количества якорей в документе используется свойство length: document.anchors.length.
Хотя массив anchors представляет собой поименованные якоря, значение anchors[index] является всегда нулевым. Но если в документе якоря именуются по порядку натуральными числами, вы можете использовать массив anchors и его свойство length для употребления имени якоря перед использованием его в операторах, таких как установка location.hash.
Элементы массива anchors окрыты открыты только для чтения. Например, выражение document.anchors[0]="anchor1" не имеет эффекта.

Свойства:

Объект anchor не имеет свойств.
Массив anchors имеет следующие свойства:
  • length определяет число поименованных якорей в документе.

Методы:

  • нет

События:

  • нет

Объект button

Изменен в Navigator 3.0.
Нажимаемая кнопка в HTML форме.

Синтаксис:

Определение кнопки:
<INPUT
TYPE="button"
NAME="buttonName"
VALUE="buttonText"
[onClick="handlerText"]>

NAME="buttonName" определяет имя объекта button. Вы можете получить это значение, используя свойство name.
VALUE="buttonText" определяет текст, отображаемый на кнопке. Вы можете получить это значение, используя свойство value.

  1. buttonName.propertyName
  2. buttonName.methodName(parameters)
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(parameters)

buttonName значение атрибута NAME объекта button.
formName значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект button в форме.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект button в форме выглядит следующим образом:
Объект button является элементом формы и должен быть определен внутри тага <FORM>.
Объект button является обычной кнопкой, которую вы можете использовать для выполнения действия, определенного вами. Кнопка выполняет скрипт, определенный событием onClick.

Свойства:

  • name отражает атрибут NAME
  • value отражает атрибут VALUE

Методы:

  • click

События:

  • onClick

Смотрите также:

  • объекты form,reset и submit.

Объект checkbox

Изменен в Navigator 3.0.
Контрольный переключатель (checkbox) в HTML форме. checkbox является сенсорным переключателем, позволяющим пользователю устанавливать значение on или off.

Синтаксис:

TYPE="checkbox"
NAME="checkboxName"
VALUE="checkboxValue"
[CHECKED]
[onClick="handlerText"]>
textToDisplay
NAME="checkboxName" определяет имя объекта checkbox. Вы можете получить это значение, используя свойство name.
VALUE="checkboxValue" определяет значение, которое посылается серверу при выборе checkbox и отправке формы. По умолчанию это "on". Вы можете получить это значение, используя свойство value.
CHECKED определяет checkbox, отображаемый помеченным галочкой. Вы можете получить это значение, используя свойство defaultChecked.
textToDisplay определяет текст, отображаемый рядом с checkbox.
Использование свойств и методов объекта checkbox:
  1. checkboxName.propertyName
  2. checkboxName.methodName(parameters)
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(parameters)

checkboxName значение атрибута NAME объекта checkbox.
formName любое значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект checkbox в форме.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект checkbox в форме выглядит следующим образом:
Объект checkbox является элементом формы и должен быть определен внутри тага <FORM>.
Свойство checked используется для определения checkbox, помеченного галочкой в настоящий момент. Свойство defaultChecked используется для определения checkbox, помеченного галочкой при загрузке формы.

Свойства:

  • checked позволяет вам в программе установить какой checkbox будет помечен галочкой.
  • defaultChecked отражает атрибут CHECKED.
  • name отражает атрибут NAME.
  • value отражает атрибут VALUE.

Методы:

  • click

События:

  • onClick

Смотрите также:

  • объекты form и radio.

Объект Date

Изменен в Navigator 3.0.
Позволяет вам работать с датой и временем.

Синтаксис:

Определение объекта Date:
  1. dateObjectName = new Date()
  2. dateObjectName = new Date("month day, year hours:minutes:seconds")
  3. dateObjectName = new Date(year, month, day)
  4. dateObjectName = new Date(year, month, day, hours, minutes, seconds)

dateObjectName любое имя нового объекта или свойство существующего объекта.
year, month, day, hours, minutes, seconds строковые значения для 2 формы синтаксиса. Для 3 и 4 - целочисленные значения.
Использование методов Date:
dateObjectName.methodName(parameters)

dateObjectName любое имя существующего объекта Date или свойство существующего объекта.
methodName один из методов, описанных ниже.

Исключение: методы parse и UTC объекта Date являются статическими методами, которые вы используются следующим образом:

Date.UTC(parameters)
Date.parse(parameters)

Свойство:

  • нет

Описание:

Объект Date является встроенным объектом JavaScript.
Формой 1 синтаксиса создаются текущие дата и время. Если вы пропускаете часы, минуты или секунды в формах 2 и 4 синтаксиса, то будет установлено нулевое значение.
Способ обращения к датам JavaScript очень похож на способ Java: оба языка имеют много одинаковых методов date и оба хранят даты внутренне как количество миллисекунд с 1 января 1970 00:00:00. Даты, предшествующие 1970 г. не допускаются.

Свойства:

  • нет

Методы:

  • getDate
  • getDay
  • getHours
  • getMinutes
  • getMonth
  • getSeconds
  • getTime
  • getTimezoneOffset
  • getYear
  • parse
  • setDate
  • setHours
  • setMinutes
  • setMonth
  • setSeconds
  • setTime
  • setYear
  • toGMTString
  • toLocaleString
  • UTC

События:

  • нет. Встроенные объекты не имеют событий.

Объект document

Изменен в Navigator 3.0.
Содержит информацию о текущем документе и обеспечен методами отображения HTML-документа.

Синтаксис:

Для определения объекта document используется стандартный HTML синтаксис:
<BODY
BACKGROUND="backgroundImage"
BGCOLOR="backgroundColor"
TEXT="foregroundColor"
LINK="unfollowedLinkColor"
ALINK="activatedLinkColor"
VLINK="followedLinkColor"
[onLoad="handlerText"]
[onUnload="handlerText"]>
</BODY>

BACKGROUND определяет картинку, которая выполняет роль фона документа.
BGCOLOR, TEXT, LINK, ALINK, VLINK определяет цвет как шестиразрядное шестнадцатиричное число (в формате "rrggbb" или "#rrggbb") или как одно из строковых названий в Color Value.
Использование свойств и методов объекта document:
  1. document.propertyName
  2. document.methodName(parameters)

propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • window

Описание:

HTML документ состоит из тагов <HEAD> и <BODY>. <HEAD> содержит информацию о заголовке документа и основании (абсолютный URL основания, используемый для относительных URL ссылок в документе). Таг <BODY> заключает в себе тело документа, который определен текущим URL. Все тело документа (все другие элементы HTML документа) находятся внутри тага <BODY>.
Вы можете загрузить новый документ, используя объект location.
Вы можете ссылаться на якоря, формы и ссылки документа, используя массивы anchors, forms и links. Эти массивы содержат запись для каждого якоря, формы и ссылки в документе.

Свойства:

  • alinkColor отражает атрибут ALINK
  • anchors массив, отражающий все якоря в документе
  • bgColor отражает атрибут BGCOLOR
  • cookie определяет "ключик"
  • fgColor отражает атрибут TEXT
  • forms массив, отражающий все формы в документе
  • lastModified отражает дату последней модификации документа
  • linkColor отражает атрибут LINK
  • links массив, отражающий все ссылки в документе
  • referrer отражает URL документа, из которого вызван текущий документ
  • title отражает содержание тага <TITLE>
  • URL отражает полный URL документа
  • vlinkColor отражает атрибут VLINK

Следующие объекты также являются свойствами объекта document:
  • anchor
  • form
  • history
  • link

Методы:

  • close
  • open
  • write
  • writeln

События:

  • нет. События onLoad и onUnload определяются в таге <BODY>, но являются событиями объекта window.

Смотрите также:

  • объекты frame и window

Массив elements

Массив объектов, содержащий элементы формы (такие как объекты checkbox, radio и text) по порядку встречаемости.

Синтаксис:

  1. formName.elements[index]
  2. formName.elements.length

formName любое имя формы или элемента в массиве forms.
index целое число, представляющее объект в форме.

Свойство:

  • form

Описание:

Вы можете ссылаться на элементы формы в вашей программе, используя массив elements. Этот массив содержит запись для каждого объекта (button, checkbox, password, radio, select, submit, text, textarea) в форме по порядку встречаемости. Например, если форма содержит поле text и два элемента checkbox, то эти элементы выглядят так formNameelements[0], formNameelements[1], formNameelements[2].
Хотя вы можете также ссылаться на элементы формы, используя имя элемента (из атрибута NAME), массив elements позволяет ссылаться на объекты формы без использования их имен. Например, если первый объект в форме userInfo является объектом text userName, вы можете получить его значение любым из следующих способов:
userInfo.userName.value
userInfo.userName[0].value

Для получения количества элементов формы, используется свойство length:

formName.elements.length

Каждая кнопка radio в объекте radio представляется как отдельный элемент в массиве elements.
Элементы в массиве elements открыты только для чтения. Например, выражение formName.elements[0]="music" не имеет эффекта.
Значение каждого элемента в массиве elements является полным HTML выражением для объекта.

Свойства:

  • length отражает количество элементов формы

Смотрите также:

  • объект form

Объект form (массив forms)

Изменен в Navigator 3.0.
Позволяет пользователям вставлять текст и делать изменения из объектов формы таких как графические опции, селекторные кнопки и списки элементов. Вы можете также использовать форму для отправки данных серверу.

Синтаксис:

Для определения формы используется стандартный синтаксис HTML с добавлением события onSubmit:
<FORM
NAME="formName"
TARGET="windowName"
ACTION="serverURL"
METHOD=GET | POST
ENCTYPE="encodingType"
[onSubmit="handlerText"]>
</FORM>

NAME="formName" определяет имя объекта form.
TARGET="windowName" определяет окно, в которое загружается результат передачи формы. Когда вы используете форму с атрибутом TARGET, сервер показывает ответы в окне windowName вместо окна, содержащего форму. windowName может быть существующим окном, именем фрейма, определенного в таге <FRAMESET> или одним из имен фрейма _top, _parent, _self или _blank; оно не может быть выражением JavaScript (например, parent.frameName или windowName.frameName). Некоторые значения для этого атрибута могут требовать определенных значений для других атрибутов. Смотрите RFC 1867. Вы можете получить это значение, используя свойство target.
ACTION="serverURL" определяет URL сервера, для которого поле формы вводит информацию is sent. Этот атрибут может указывать приложения CGI или LiveWire на сервере, это может также быть mailto: URL если форма отправляет почту. Смотрите объект location, где описаны компоненты URL. Некоторые значения для этого атрибута могут требовать определенных значений для других атрибутов. Смотрите RFC 1867. Вы можете получить это значение, используя свойство action.
METHOD=GET | POST определяет метод передачи информации серверу, определенному ACTION. GET (по умолчанию) добавляет введенную информацию к URL, которая в большинстве принимающих систем становится значением переменной окружения QUERY_STRING. POST отправляет вводимую информацию в теле данных, которое является доступным на stdin с длинной данных в переменной окружения CONTENT_LENGTH. Некоторые значения для этого атрибута могут требовать определенных значений для других атрибутов. Смотрите RFC 1867. Вы можете получить это значение, используя свойство method.
ENCTYPE="encodingType" определяет MIME кодировку данных, установленную: "application/x-www-forum-urlencoded" (по умолчанию) или "multipart/form-data". Некоторые значения для этого атрибута могут требовать определенных значений для других атрибутов. Смотрите RFC 1867. Вы можете получить это значение, используя свойство encoding.
Использование свойств и методов объекта form:

  1. formName.propertyName
  2. formName.methodName(parameters)
  3. forms[index].propertyName
  4. forms[index].methodName(parameters)

formName значение атрибута NAME объекта form.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.
index целое число, представляющее объект form.

Свойство:

  • document

Описание:

Каждая форма в документе является отдельным объектом.
Вы можете ссылаться на элементы формы в вашей программе, используя имя элемента (из атрибута NAME) или массив elements. Массив elements содержит запись для каждого элемента (таких как объекты checkbox, radio или text) в форме.

Массив forms

Вы можете ссылаться на формы в вашей программе, используя массив forms (вы можете также использовать имя формы). Этот массив содержит запись для каждого объекта form (тага <FORM>) по порядку встречаемости в документе. Например, если документ содержит три формы, то эти формы представлены так document.forms[0], document.forms[1] и document.forms[2].
Использование массива forms:
  1. document.forms[index]
  2. document.forms.length

index целое число, представляющее форму в документе.
Для получения количества форм в документе используется свойство length: document.forms.length.
Вы можете также обращаться к элементам формы, используя массив forms. Например, вы обращаетесь к объекту text с именем quantity во второй форме так:

document.forms[1].quantity.

Элементы массива forms открыты только для чтения. Например, выражение document.forms[0]="music" не имеет эффекта.
Значение каждого элемента в массиве forms является <object nameAttribute>, где nameAttribute является атрибутом NAME формы.

Свойства:

Объект form имеет следующие свойства:
  • action отражает атрибут ACTION
  • elements массив, отражающий все элементы в форме
  • encoding отражает атрибут ENCTYPE
  • length отражает количество элементов в форме
  • method отражает атрибут METHOD
  • target отражает атрибут TARGET

Следующие объекты являются также свойствами объекта form:
  • button
  • checkbox
  • hidden
  • password
  • radio
  • reset
  • select
  • submit
  • text
  • textarea

Массив forms имеет следующие свойства:
  • length отражает количество форм в документе

Методы:

  • submit

События:

  • onSubmit

Смотрите также:

  • объекты button, checkbox, hidden, password, radio, reset, select, submit, text, textarea.

Объект frame (массив frames)

Изменен в Navigator 3.0.
Окно, которое может показывать на одном экране несколько независимо прокручиваемых фреймов, каждый из которых имеет свой собственный URL. Фреймы могут указывать на различные URL'и и быть ссылкой других URL'ей, все внутри одного экрана.

Синтаксис:

Для определения объекта frame используется стандартный HTML синтаксис. События onLoad и onUnload определяются в таге <FRAMESET>, но являются событиями объекта window:
<FRAMESET
ROWS="rowHeightList"
COLS="columnWidthList"
[onLoad="handlerText"]
[onUnload="handlerText"]>
[<FRAME SRC="locationorURL" NAME="frameName">]
</FRAMESET>

ROWS="rowHeightList" через запятую указывается набор значений, определяющих высоту фрейма. Можно определить единицу измерения, по умолчанию это пиксели.
COLS="columnWidthList" через запятую указывается набор значений, определяющих ширину фрейма. Можно определить единицу измерения, по умолчанию это пиксели. <FRAME> определяет фрейм
SRC="locationorURL" определяет URL документа, показываемого во фрейме. URL не может включать имя якоря, например, <FRAME SRC="doc2.html#colors" NAME="frame2" - это не правильно. Смотрите объект location, где описаны компоненты URL.
NAME="frameName" определяет имя, используемое как ссылка для перехода по гиперссылкам.
Использование свойств объекта frame:

  1. [windowReference.]frameName.propertyName
  2. [windowReference.]frames[index].propertyName
  3. window.propertyName
  4. self.propertyName
  5. parent.propertyName

windowReference переменная windowVar из определения окна (смотрите объект window) или один из синонимов top или parent.
frameName значение атрибута NAME в таге <FRAME> объекта frame.
index целое число, представляющее объект frame.
propertyName одно из свойств, описанных ниже.

Свойство:

  • Объект frame является свойством window
  • Массив frames является свойством frame и window

Описание:

Таг <FRAMESET> используется в HTML документе, единственная его цель - определить расположение фреймов, составляющих страницу. Каждый фрейм является объектом window.
Если таг <FRAME> содержит атрибуты SRC и NAME, вы можете ссылаться на этот фрейм из фрейма, находящегося на том же уровне иерархии, используя parent.frameName или parent.frames[index]. Например, если четвертый фрейм в установке имеет NAME="homeFrame", то фреймы, находящиеся на том же уровне иерархии, могут ссылаться на этот фрейм, используя parent.homeFrame или parent.frames[3].
Свойства self и window являются синонимами для текущего фрейма, вы можете использовать их для ссылок в текущем фрейме.
Свойства top и parent являются также синонимами, которые могут использоваться вместо имени фрейма. top ссылается на самое верхнее окно, содержащее фреймы или nested framesets, и parent ссылается на окно, содержащее текущий frameset. Смотрите свойства top и parent.

Массив frames

Вы можете ссылаться на объекты frame в вашей программе, используя массив frames. Этот массив содержит запись для каждого фрейма-потомка (тага <FRAME>) в окне, содержащем таг <FRAMESET> по порядку встречаемости. Например, если окно содержит три фрейма-потомка, эти фреймы отображаются как parent.frames[0], parent.frames[1], parent.frames[2].
Использование массива frames:
  1. [frameReference.]frames[index]
  2. [frameReference.]frames.length
  3. [windowReference.]frames[index]
  4. [windowReference.]frames.length

frameReference действительный путь ссылки на фрейм, описанный в объекте frame.
windowReference переменная windowVar из определения окна (смотрите объект window) или один из синонимов top или parent.
index целое число, представляющее количество фреймов в родительском окне.
Для получения количества фреймов-потомков в окне или фрейме используется свойство length:

[windowReference.]frames.length
[frameReference.]frames.length

Элементы в массиве frames открыты только для чтения. Например, выражение [windowReference.]frames[0]="frame1" не имеет эффекта.
Значение каждого элемента в массиве frames является <object nameAttribute>, nameAttribute является атрибутом NAME фрейма.

Свойства:

Объект frame имеет следующие свойства:
  • frames массив, отражающий все фреймы окна
  • name отражает атрибут NAME тага <FRAME>
  • length отражает количество фреймов-потомков внутри фрейма
  • parent синоним для окна или фрейма, содержащего текущий фрейм
  • self синоним для текущего фрейма
  • window синоним для текущего фрейма

Массив frames имеет следующие свойства:
  • length отражает количество фреймов-потомков внутри фрейма

Методы:

  • clearTimeout
  • setTimeout

События:

  • нет. События onLoad и onUnload определяются в таге <FRAMESET>, но являются событиями для объекта window.

Смотрите также:

  • объекты document и window.

Объект hidden

Изменен в Navigator 3.0.
Текстовый объект формы, который не отображается в HTML форме. Объект hidden используется для передачи пар имя/значение при загрузке формы.

Синтаксис:

Определение объекта hidden:
<INPUT
TYPE="hidden"
NAME="hiddenName"
[VALUE="textValue"]>

NAME="hiddenName" определяет имя объекта hidden. Вы можете получить это значение, используя свойство name.
VALUE="textValue" определяет начальное значение объекта hidden.
Использование свойств объекта hidden:

  1. hiddenName.propertyName
  2. formName.elements.[index].propertyName

hiddenName значение атрибута NAME объекта hidden.
formName любое значение атрибута NAME объекта form или элемента массива forms.
index целое число, представляющее объект hidden в форме.
propertyName одно из свойств, описанных ниже.

Свойство:

  • form

Описание:

Объект hidden является элементом формы и должен быть определен внутри тага <FORM>.
Объект hidden не может быть увиден и изменен пользователем, но вы можете запрограммировать изменение значения объекта, изменяя свойство value. Вы можете использовать объекты hidden для коммуникаций клиент/сервер.

Свойства:

  • name отражает атрибут NAME
  • value отражает текущее значение объекта hidden

Методы:

  • нет

События:

  • нет

Смотрите также:

  • свойство cookie

Объект history

Содержит информацию о URL'ях, которые клиент посещал внутри окна. Эта информация сохраняется и доступна через меню Go Navigator'а.

Синтаксис:

Использование объекта history:
  1. history.propertyName
  2. history.methodName(parameters)

propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • document

Описание:

Объект history связанным списком URL'ей, посещенных пользователем, как показано в меню Go Navigator'а.

Свойства:

  • length отражает количество записей в объекте history

Методы:

  • back
  • forward
  • go

События:

  • нет

Смотрите также:

  • свойство location

Объект link (массив links)

Изменен в Navigator 3.0.
Кусок текста или картинка, определенные как гипертекстовая ссылка. При выборе пользователем ссылки в тексте, в окно загружается документ, соответствующий этой гипертекстовой ссылке.

Синтаксис:

Для определения ссылки используется стандартный HTML синтаксис с добавлением событий onClick и onMouseOver:
<A HREF=locationorURL
[NAME="anchorName"]
[TARGET="windowName"]
[onClick="handlerText"]
[onMouseOver="handlerText"]>
linkText
</A>

A HREF=locationorURL идентифицирует место назначение якоря или URL. Смотрите объект location, где описаны компоненты URL.
NAME="anchorName" определяет таг, который становиться доступной гипертекстовой ссылкой внутри текущего документа. Если этот атрибут представлен, объект link является также объектом anchor. Смотрите anchor.
TARGET="windowName" определяет окно, в которое загружается обозначенный ссылкой документ. windowName может быть существующим окном, это также может быть имя фрейма, определенного в таге <FRAMESET>, или одно из literal имен фреймов _top, _parent, _self или _blank, это не может быть выражением JavaScript (например, это не может быть parent.frameName или windowName.frameName).
linkText отображается как гипертекстовая ссылка на URL.
Вы можете также определить ссылку, используя метод link.
Использование свойств объекта link:

document.links[index].propertyName

index целое число, отражающее объект link.
propertyName одно из свойств, описанных ниже.

Свойство:

  • document

Описание:

Каждый объект link является объектом location и имеет те же свойства как и объект location.
Если объект link также является объектом anchor, то объект записан в массивах anchors и links.
Когда пользователь выбирает объект link и переходит в документ, обозначенный ссылкой (определенный HREF=locationorURL), то этот документ содержит URL документа источника.

Массив links

Вы можете ссылаться на объекты link в вашей программе, используя массив links. Этот массив содержит запись для каждого объекта link (тага <A HREF="">) по порядку встречаемости в документе. Например, если документ содержит три объекта link, то эти ссылки представлены так document.links[0], document.links[1] и document.links[2].
Использование массива links:
  1. document.links[index]
  2. document.links.length

index целое число, представляющее ссылку в документе.
Для получения количества ссылок в документе используется свойство length: document.links.length.
Элементы в массиве links открыты только для чтения. Например, выражение document.links[0]="link1" не имеет эффекта.

Свойства:

Объект link имеет следующие свойства:
  • hash определяет имя якоря в URL
  • host определяет hostname:port часть URL'а
  • hostname определяет хост и доменное имя или IP адрес сетевого хоста
  • href определяет запись URL
  • pathname определяет url-path часть URL'а
  • port определяет коммуникационный порт, который сервер использует для коммуникаций
  • protocol определяет начало URL, включая двоеточие
  • search определяет запрос
  • target отражает атрибут TARGET

Массив links имеет следующие свойства:
  • length отражает количество ссылок в документе

Методы:

  • нет

События:

  • onClick
  • onMouseOver

Смотрите также:

  • объект anchor
  • метод link

Объект location

Изменен в Navigator 3.0.
Содержит информацию о текущем URL.

Синтаксис:

Использование объекта location:
[windowReference.]location[.propertyName]

windowReference переменная windowVar из определения окна (смотрите объект window) или один из синонимов top или parent.
propertyName одно из свойств, описанных ниже. Пропуск имени свойства является равносильным определению свойства href (полный URL).

Свойство:

  • window

Описание:

Объект location представляет собой полный URL. Каждое свойство объекта location представляет собой отдельную часть URL.
Следующий формат URL показывает связь между location свойствами:
protocol//hostname:port pathname search hash

protocol представляет собой начало URL, включая первое двоеточие.
hostname представляет хост и доменное имя или IP адрес сетевого хоста.
port представляет коммуникационный порт, который сервер использует для коммуникаций.
pathname представляет url-path часть URL'а.
search представляет любой запрос в URL'е, начинающийся со знака вопроса.
hash представляет имя якоря фрагмент в URL'е, начинающийся со знака #.
Смотрите описание свойств ниже, где более детально описаны различные части URL, или свойство href.
Объект location имеет еще два свойства, не показанных в формате:
href представляет полный URL.
host представляет набор hostname:port.
Объект location содержится в объекте window. Если вы ссылаетесь на объект location без определения окна, то объект location представляется как текущий location.
Если вы ссылаетесь на объект location и определяете имя окна, например, windowReference.location.propertyName, то объект location представляется как location определенного окна.
Не путайте объект location со свойством location объекта document. Вы не можете изменить значение свойства location (document.location), но вы можете изменить значение свойств объекта location (window.location.propertyName). document.location является строковым значением, которое обычно равно window.location.href, который устанавливается когда вы загружаете документ, но перенаправление может изменить его.
Синтаксис для общеизвестных типов URL:
URL type | Protocol | Example
JavaScript | javascript: | javascript:history.go(-1)
Navigator info | about: | about:cache
Word Wide Web | http: | http://www.netscape.com/
File | file: | file:///javascript/methods.html
FTP | ftp: | ftp://ftp.mine.com/home/mine
MailTo | mailto: | mailto:info@netscape.com
Usenet | news: | news://news.scruznet.com/comp.la ng.javascript
Gopher | gopher: | gopher.myhost.com

javascript:protocol оценивает выражение после двоеточия (:), если оно есть, и загружает страницу, содержащую строковое значение выражения, если оно не определено. Если выражение не определено, то новая страница не загружается.
about:protocol обеспечивает информацией Navigator и имеет следующий синтаксис:

about:[cache|plugins]

about: является равносильным выбору About Netscape из Help меню Navigator'а.
about:cache показывает disk cache статистики.
about:plug-ins показывает информацию о сконфигурированных вами plug-ins'ах. Это равносильно выбору About Plug-ins из Help меню Navigator'а.

Свойства:

  • hash определяет имя якоря в URL
  • host определяет hostname:port часть URL'а
  • hostname определяет хост и доменное имя или IP адрес сетевого хоста
  • href определяет запись URL
  • pathname определяет url-path часть URL'а
  • port определяет коммуникационный порт, который сервер использует для коммуникаций
  • protocol определяет начало URL, включая двоеточие
  • search определяет запрос

Методы:

  • нет

События:

  • нет

Смотрите также:

  • объект history
  • свойство URL

Объект Math

Изменен в Navigator 3.0.
Встроенный объект, имеющий свойства и методы для математических констант и функций. Например, свойство PI объекта Math имеет значение Пи.

Синтаксис:

Использование объекта Math:
  1. Math.propertyName
  2. Math.methodName(parameters)

propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • нет

Описание:

Объект Math является встроенным объектом JavaScript.
Вы ссылаетесь на константу PI как Math.PI. Константы определены в JavaScript с точностью до действительных чисел.
Аналогично, вы ссылаетесь на функции Math как на методы. Например, функция синуса - Math.sin(argument), где argument является аргументом функции.
Выражение with удобно при использовании нескольких констант и методов Math, так как не нужно указывать тип "Math" для каждой константы или метода. Например,
with (Math) {
a = PI*r*r
y = r*sin(theta)
x = r*cos(theta)
}

Свойства:

  • E
  • LN2
  • LN10
  • LOG2E
  • LOG10E
  • PI
  • SQRT1_2
  • SQRT2

Методы:

  • abs
  • acos
  • asin
  • atan
  • ceil
  • cos
  • exp
  • floor
  • log
  • max
  • min
  • pow
  • random
  • round
  • sin
  • sqrt
  • tan

События:

  • нет. Встроенные объекты не имеют событий.

Объект navigator

Изменен в Navigator 3.0.
Содержит информацию о используемой версии Navigator'а.

Синтаксис:

Использование объекта navigator:
navigator.propertyName

propertyName одно из свойств, описанных ниже.

Свойство:

  • нет

Описание:

Объект navigator используется для определения версии Navigator'а ваших пользователей.

Свойства:

  • appCodeName определяет кодовое имя броузера
  • appName определяет имя броузера
  • appVersion определяет версию броузера
  • userAgent определяет заголовок пользовательского агента

Методы:

  • нет

События:

  • нет

Смотрите также:

  • объект link
  • объект anchor

Объект password

Изменен в Navigator 3.0.
Текстовое поле в HTML форме, значение которого на экране отображается звездочками (*). Когда пользователь вводит текст в это поле, звездочки (*) скрывают введенное значение.

Синтаксис:

Для определения объекта password используется стандартный HTML синтаксис:
<INPUT
TYPE="password"
NAME="passwordName"
[VALUE="textValue"]
SIZE=integer>

NAME="passwordName" определяет имя объекта password. Вы можете получить это значение, используя свойство name.
VALUE="textValue" определяет первоначальное значение объекта password. Вы можете получить это значение, используя свойство defaultValue.
SIZE=integer определяет количество символов объекта password, вмещающихся без прокрутки.
Использование свойств и методов объекта password:

  1. passwordName.propertyName
  2. passwordName.methodName
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(patameters)

passwordName значение атрибута NAME объекта password.
formName любое значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект password в форме.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект password в форме выглядит следующим образом:
Объект password является элементом формы и должен быть определен внутри тага <FORM>.

Свойства:

  • defaultValue отражает атрибут VALUE
  • name отражает атрибут NAME
  • value отражает текущее значение поля объекта password

Методы:

  • focus
  • blur
  • select

События:

  • нет

Смотрите также:

  • объекты form и text

Объект radio

Изменен в Navigator 3.0.
Установка статических кнопок (кнопок radio) в HTML форме. Установка кнопок radio позволяет пользователю выбрать один пункт из списка.

Синтаксис:

Для определения установки кнопок radio используется стандартный HTML синтаксис с добавлением события onClick:
<INPUT
TYPE="radio"
NAME="radioName"
VALUE="buttonValue"
[CHECKED]
[onClick="handlerText"]>
textToDisplay

NAME="radioName" определяет имя объекта radio. Все кнопки radio в группе имеют одинаковый атрибут NAME. Вы можете получить это значение, используя свойство name.
VALUE="buttonValue" определяет значение, которое возвращается серверу, когда radio кнопка выбирается и форма утверждается. По умолчанию это "нет". Вы можете получить это значение, используя свойство value.
CHECKED определяет, что кнопка radio выбрана. Вы можете получить это значение, используя свойство defaultChecked.
textToDisplay определяет текст, отображаемый рядом с кнопкой radio.
Использование свойств и методов объекта radio:

  1. radioName[index1].propertyName
  2. radioName[index1].methodName(parameters)
  3. formName.elements[index2].propertyName
  4. formName.elements[index2].methodName(parameters)

radioName значение атрибута NAME объекта radio.
index1 целое число, представляющее кнопку radio в объекте radio.
formName любое значение атрибута NAME объекта form или элемента в массиве forms.
index2 целое число, представляющее кнопку radio в форму. Массив
elements содержит записи для каждой кнопке radio в объекте radio.
propertyName одно из свойств, описанных ниже.
methodName(parameters) один из методов, описанных ниже.

Свойство:

  • нет

Описание:

Объект radio в форме выглядит следующим образом:
Объект radio является элементом формы и должен быть определен внутри тага <FORM>.
Все кнопки radio в группе кнопок radio используют одинаковое свойство name. Для обращения к отдельным кнопкам radio в вашей программе, используйте имя объекта с индексом, начинающимся с нуля, для каждой кнопки, также как вы это делали для массива, forms: document.forms[0].radioName[0] это первая, document.forms[0].radioName[1] это вторая и так далее.

Свойства:

  • checked позволяет вам программно выбирать кнопку radio
  • defaultChecked отражает атрибут CHECKED
  • length отражает количество кнопок radio в объекте radio
  • name отражает атрибут NAME
  • value отражает атрибут VALUE

Методы:

  • click

События:

  • onClick

Смотрите также:

  • объекты checkbox, form и select

Объект reset

Изменен в Navigator 3.0.
Кнопка сброса (кнопка reset)в HTML форме. Кнопка reset сбрасывает все элементы в форме в их значения, установленные по умолчанию.

Синтаксис:

Для определение кнопки reset используется стандартный HTML синтаксис с добавлением события onClick:
<INPUT
TYPE="reset"
NAME="resetName"
VALUE="buttonText"
[onClick="handlerText"]

NAME="resetName" определяет имя объекта reset. Вы можете получить это значение, используя свойство name.
VALUE="buttonText" определяет текст, отображаемый на кнопке. Вы можете получить это значение, используя свойство value.
Использование свойств и методов объекта reset:

  1. resetName.propertyName
  2. resetName.methodName(parameters)
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(parameters)

resetName значение атрибута NAME объекта reset.
formName любое значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект reset в форме.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект reset в форме выглядит следующим образом:
Объект reset является элементом формы и должен быть описан внутри тага <FORM>.
Событие onClick кнопки reset не может предотвратить сброса формы; если вы нажали кнопку, сброс не может быть отменен.

Свойства:

  • name отражает атрибут NAME
  • value отражает атрибут VALUE

Методы:

  • click

События:

  • onClick

Объект string

Изменен в Navigator 3.0.
Ряд символов.

Синтаксис:

Использование объекта string:
  1. stringName.propertyName
  2. stringName.methodName(parameters)

stringName имя строковой переменной.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • нет

Описание:

Объект string является встроенным объектом JavaScript.
Строка может быть представлена как литерал, заключенный в одинарные или двойные кавычки; например, "Netscape" или 'Netscape'.

Свойства:

  • length определяет длину ряда

Методы:

  • anchor
  • big
  • blink
  • bold
  • charAt
  • fixed
  • fontcolor
  • fontsize
  • indexOf
  • italics
  • lastIntexOf
  • link
  • small
  • strike
  • sub
  • substring
  • sup
  • toLowerCase
  • toUpperCase

События:

  • нет. Встроенные объекты не имеют событий.

Смотрите также:

  • объекты text и textarea

Объект submit

Изменен в Navigator 3.0.
Кнопка передачи данных (кнопка submit) в HTML форме. Кнопка submit вызывает передачу формы.

Синтаксис:

Для определения кнопки submit используется стандартный HTML синтаксис с добавлением события onClick:
<INPUT
TYPE="submit"
NAME="submitName"
VALUE="buttonText"
[onClick="handlerText"]>

NAME="submitName" определяет имя объекта submit. Вы можете получить это значение, используя свойство name.
VALUE="buttonText" определяет текст, отображаемый на кнопке. Вы можете получить это значение, используя свойство value.
Использование свойств и методов объекта submit:

  1. sibmitName.propertyName
  2. submitName.methodName(parameters)
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(parameters)

sibmitName значение атрибута NAME объекта submit.
formName значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект submit в форме.
propertyName одно из свойств, описанных ниже.
methodName(parameters) один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект submit в форме выглядит следующим образом:
Объект submit является элементом формы и должен быть определен внутри тага <FORM>.
При щелчке на кнопке submit форма передается по URL, определенному в свойстве формы action. Этот action всегда загружает новую страницу клиенту; это может быть текущая страница, если action так определен или не определен вообще.
Событие onClick кнопки submit не может предотвратить передачу формы; вместо этого используйте событие onSubmit формы или вместо объекта submit используйте метод submit.

Свойства:

  • name отражает атрибут NAME
  • value отражает атрибут VALUE

Методы:

  • click

События:

  • onClick

Смотрите также:

  • объекты button, form и reset
  • метод submit
  • событие onSubmit

Объект text

Изменен в Navigator 3.0.
Поле ввода текста в HTML форме. Текстовое поле позволяет пользователю вводить слова, фразы или числовой ряд.

Синтаксис:

Для определения объекта text используется стандартный HTML синтаксис с добавлением событий onBlur, onChange, onFocus, onSelect:
<INPUT
TYPE="text"
NAME="textName"
VALUE="textValue"
SIZE=integer
[onBlur="handlerText"]
[onChange="handlerText"]
[onFocus="handlerText"]
[onSelect="handlerText"]>

NAME="textName" определяет имя объекта text. Вы можете получить это значение, используя свойство name.
VALUE="textValue" определяет первоначальное значение объекта text. Вы можете получить это значение, используя свойство value.
SIZE=integer определяет количество символов объекта text, помещающихся без прокрутки.
Использование свойств и методов объекта text:

  1. textName.propertyName
  2. textName.methodName(parameters)
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(parameters)

textName значение атрибута NAME объекта text.
formName значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект text в форме.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект text в форме выглядит следующим образом:
Объект text является элементом формы и должен быть описан внутри тага <FORM>.
Объект text может быть обновлен динамично установкой свойства value (this.value).

Свойства:

  • defaultValue отражает атрибут VALUE
  • name отражает атрибут NAME
  • value отражает текущее значение поля объекта text

Методы:

  • blur
  • focus
  • select

События:

  • onBlur
  • onChange
  • onFocus
  • onSelect

Смотрите также:

  • объекты form, password, string и textarea

Объект textarea

Изменен в Navigator 3.0.
Многострочное поле ввода текста в HTML форме. Поле textarea позволяет пользователю вводить слова, фразы или числа.

Синтаксис:

Для определения текстовой области используется стандартный HTML синтаксис с добавлением событий onBlur, onChange, onFocus и onSelect:
<TEXTAREA
NAME="textareaName"
ROWS="integer"
COLS="integer"
WRAP="off|virtual|physical"
[onBlur="handlerText"]
[onChange="handlerText"]
[onFocus="handlerText"]
[onSelect="handlerText"]>
textToDisplay
</TAXTAREA>

NAME="textareaName" определяет имя объекта textarea. Вы можете получить это значение, используя свойство name.
ROWS="integer" и COLS="integer" устанавливает размер в символах отображаемого поля вода.
textToDisplay определяет первоначальное значение объекта textarea. textarea всегда только ASCII текст с разделением на строки.
Атрибут WRAP контролирует длину обрабатываемых строк в TEXTAREA. Значение "off" установлено по умолчанию - строки посылаются так, как они введены. Значение "virtual" отображает строки с переносами, но они посылаются так, как введены. Значение "physical" отображает строки с переносами и посылаются они с установленными переносами.
Использование свойств и методов textarea:

  1. textareaName.propertyName
  2. textareaName.methodName(property)
  3. formName.elements[index].propertyName
  4. formName.elements[index].methodName(parameters)

textareaName значение атрибута NAME объекта textarea.
formName значение атрибута NAME объекта form или элемента в массиве forms.
index целое число, представляющее объект textarea в форме.
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.

Свойство:

  • form

Описание:

Объект textarea в форме выглядит следующим образом:
Объект textarea является элементом формы и должен быть определен внутри тага <FORM>.
Для начала новой строки в объекте textare вы можете использовать символ новой строки. Этот символ различен для разных платформ: в Unix - это \n, Windows - \r\n, Macintosh - \n. Одним из способов ввода символа новой строки программно является тестирование свойством appVersion для определения текущей платформы и установки символа новой строки таким образом. Смотрите примеры свойства appVersion.

Свойства:

  • defaultValue отражает атрибут VALUE.
  • name отражает атрибут NAME.
  • value отражает текущее значение объекта textarea.

Методы:

  • blur
  • focus
  • select

События:

  • onBlur
  • onChange
  • onFocus
  • onSelect

Смотрите также:

  • объекты form, password, string и text.

Объект window

Изменен в Navigator 3.0.
Объект верхнего уровня для групп объектов document, location и history.

Синтаксис:

Для определения окна используется метод open:
windowVar = window.open("URL", "windowName" [,"windowFeatures"])

windowVar имя нового окна. Эта переменная используется при ссылках на свойства, методы и контейнеры окна.
windowName имя окна, используемое в атрибуте TARGET тагов <FORM> и <A>.
Более подробное определение окна смотрите в методе open.
Использование свойств и методов window:

  1. window.propertyName
  2. window.methodName(parameters)
  3. self.propertyName
  4. self.methodName(parameters)
  5. top.propertyName
  6. top.methodName(parameters)
  7. parent.propertyName
  8. parent.methodName(parameters)
  9. windowVar.propertyName
  10. windowVar.methodName(parameters)
  11. propertyName
  12. methodName(parameters)

windowVar переменная, ссылающаяся на обект window. Смотрите синтаксис определения окна.
propertyName одно из свойств, описаныых ниже.
methodName один из методов, описанных ниже.
Для определения событий onLoad и onUnload для объекта window используются таги <BODY> и <FRAMESET>:

<BODY
...
[onLoad="handlerText"]
[onUnload="handlerText"]>
</BODY>
<FRAMESET
ROWS="rowHeightList"
COLS="columnWidthList"
[onLoad="handlerText"]
[onUnload="handlerText"]
[<FRAME SRC="locationorURL" NAME="frameName"]>
</FRAMESET>

Информацию о тагах <FRAMESET> и <BODY> смотрите в объектах document и frame.

Свойства:

  • нет

Описание:

Объект window является объектом верхнего уровня в клиентской иерархии JavaScript. Объекты frame также являются окнами.
Свойства self и window являются синонимами для текущего окна, и вы можете использовать их для ссылки на текущее окно. Например, вы можете закрыть текущее окно, используя window.close() или self.close(). Вы можете использовать эти свойства для однозначного определения свойства self.status из формы, называемой status.
Свойства top и parent также являются синонимами и могут быть использованы вместо имени окна. top ссылается на самое верхнее окно Navigator-а, а parent ссылается на окно, содержащее frameset. Смотрите свойства top и parent. Поскольку допускается существование текущего окна, вам не нужно ссылаться на имя окна, когда вы объявляете его методы или назначаете свойства. Например, status="Jump to a new location" является действительным назначением свойства и close() является действительным вызовом метода. Однако, когда вы открываете или закрываете окно внутри события, вы должны определить window.open() или window.close() вместо того, чтобы использовать просто open() или close(). Благодаря to the scoping статических объектов в JavaScript, объявление close() без определения имени объекта равносильно document.close().
Вы можете ссылаться на объекты frame окна, используя массив frames. Массив frames содержит запись для каждого фрейма в окне с тагом <FRAMESET>.
У окон отсутствуют события пока в них не загружен некоторый HTML-документ, содержащий таги <BODY> или <FRAMESET>.

Свойства:

  • defaultStatus отражает сообщение по умолчанию, отображаемое в строке состояния окна
  • frames массив, отражающий все фреймы окна
  • length отражает количество фреймов в родительском окне
  • name отражает аргумент windowName
  • parent является синонимом аргумента windowName и ссылается на окно, содержащее frameset
  • self является синонимом аргумента windowName и ссылается на текущее окно
  • status определяет текущее сообщение строки состояния окна
  • top является синонимом аргумента windowName и ссылается на самое верхнее окно Navigator-а
  • window является синонимом аргумента windowName и ссылается на текущее окно

Следующие объекты являются также свойствами объекта window:
  • document
  • frame
  • location

Методы:

  • alert
  • close
  • confirm
  • open
  • prompt
  • setTimeout
  • clearTimeout

События:

  • onLoad
  • onUnload

Смотрите также:

  • объекты document и frame


Органайзер

Домашняя страница Алексея Александрова

<SCRIPT LANGUAGE="JavaScript">
<!--
// Alex Alexandrov wrote:
// This scrpt was taken from a book called "Learn Advanced Java Script" Chapter 14.
// The guys who wrote that book wanted us to leave a copyright. So here it goes:
// 	THIS SCRPIT IS COPYRIGHTED//
// 	Be AWARE TO PUT IT ON YOUR PAGE//
// Boolean variable specified if alert should be displayed if cookie exceeds 4KB
var caution = false
// name - name of the cookie
// value - value of the cookie
// [expires] - expiration date of the cookie (defaults to end of current session)
// [path] - path for which the cookie is valid (defaults to path of calling document)
// [domain] - domain for which the cookie is valid (defaults to domain of calling document)
// [secure] - Boolean value indicating if the cookie transmission requires a secure transmission
// * an argument defaults when it is assigned null as a placeholder
// * a null placeholder is not required for trailing omitted arguments
function setCookie(name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "")
    if (!caution || (name + "=" + escape(value)).length <= 4000)
        document.cookie = curCookie
    else
        if (confirm("Cookie превышает 4KB и будет вырезан !"))
            document.cookie = curCookie
}

// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function getCookie(name) {
    var prefix = name + "="
    var cookieStartIndex = document.cookie.indexOf(prefix)
    if (cookieStartIndex == -1)
        return null
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
    if (cookieEndIndex == -1)
        cookieEndIndex = document.cookie.length
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

// name - name of the cookie
// [path] - path of the cookie (must be same as path used to create cookie)
// [domain] - domain of the cookie (must be same as domain used to create cookie)
// * path and domain default if assigned null or omitted if no explicit argument proceeds
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT"
    }
}

function fixDate(date) {
    var base = new Date(0)
    var skew = base.getTime()
    if (skew > 0)
        date.setTime(date.getTime() - skew)
}

function initCookie(monthName) {
    // initializes cookie with the following format:
    // ^1^^2^^3^^4^...^30^^31^

    // initialize accumulative variable
    var text = ""
    for (var i = 1; i <= 31; ++i) {
        text += "^" + i + "^"
    }

    var now = new Date()
    fixDate(now)

    // set time to one month (31 days) in the future
    now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31)

    setCookie(monthName + "Calendar", text, now)
}

function getSpecificReminder(num, monthName) {
    var prefix = "^" + num + "^"
    var totalCookie = getCookie(monthName + "Calendar")
    var startIndex = totalCookie.indexOf(prefix, 0)
    var startData = totalCookie.indexOf("^", startIndex + 1) + 1
    if (num == 31)
        var endData = totalCookie.length
    else
        var endData = totalCookie.indexOf("^", startData)

    return totalCookie.substring(startData, endData)
}

function setSpecificReminder(num, monthName, newValue) {
    var prefix = "^" + num + "^"
    var totalCookie = getCookie(monthName + "Calendar")
    var startIndex = totalCookie.indexOf(prefix, 0)
    var startData = totalCookie.indexOf("^", startIndex + 1) + 1
        if (num == 31)
        var endData = totalCookie.length
    else
        var endData = totalCookie.indexOf("^", startData)
    var now = new Date()
    fixDate(now)

    // set time to one month (31 days) in the future
    now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31)

    setCookie(monthName + "Calendar", totalCookie.substring(0, startData) + newValue + totalCookie.substring(endData, totalCookie.length), now)
}

function getInput(num, monthName) {
    if (!getCookie(monthName + "Calendar"))
        initCookie(monthName)
    var newValue = prompt("Введите запись соответствующей данной дате:", getSpecificReminder(num, monthName))
    if (newValue) // user did not cancel
        setSpecificReminder(num, monthName, newValue)
}

function getTime() {
    // initialize time-related variables with current time settings
    var now = new Date()
    var hour = now.getHours()
    var minute = now.getMinutes()
    now = null
    var ampm = ""

    // validate hour values	and set value of ampm
    if (hour >= 12) {
        hour -= 12
        ampm = "PM"
    } else
        ampm = "AM"
    hour = (hour == 0) ? 12 : hour

    // add zero digit to a one digit minute
    if (minute < 10)
        minute = "0" + minute // do not parse this number!

    // return time string
    return hour + ":" + minute + " " + ampm
}

function leapYear(year) {
    if (year % 4 == 0) // basic rule
        return true // is leap year
    return false // is not leap year
}

function getDays(month, year) {
    // create array to hold number of days in each month
    var ar = new Array(12)
    ar[0] = 31 // January
    ar[1] = (leapYear(year)) ? 29 : 28 // February
    ar[2] = 31 // March
    ar[3] = 30 // April
    ar[4] = 31 // May
    ar[5] = 30 // June
    ar[6] = 31 // July
    ar[7] = 31 // August
    ar[8] = 30 // September
    ar[9] = 31 // October
    ar[10] = 30 // November
    ar[11] = 31 // December

    // return number of days in the specified month (parameter)
    return ar[month]
}

function getMonthName(month) {
    // create array to hold name of each month
    var ar = new Array(12)
    ar[0] = "ЯНВАРЬ"
    ar[1] = "ФЕВРАЛЬ"
    ar[2] = "МАРТ"
    ar[3] = "АПРЕЛЬ"
    ar[4] = "МАЙ"
    ar[5] = "ИЮНЬ"
    ar[6] = "ИЮЛЬ"
    ar[7] = "АВГУСТ"
    ar[8] = "СЕНТЯБРЬ"
    ar[9] = "ОКТЯБРЬ"
    ar[10] = "НОЯБРЬ"
    ar[11] = "ДЕКАБРЬ"

    // return name of specified month (parameter)
    return ar[month]
}

function setCal() {
    // standard time attributes
    var now = new Date()
    var year = now.getYear()
    var month = now.getMonth()
    var monthName = getMonthName(month)
    var date = now.getDate()
    now = null

    // create instance of first day of month, and extract the day on which it occurs
    var firstDayInstance = new Date(year, month, 1)
    var firstDay = firstDayInstance.getDay()
    firstDayInstance = null

    // number of days in current month
    var days = getDays(month, year)

    // call function to draw calendar
    drawCal(firstDay + 1, days, date, monthName, 1900 + year)
}

function drawCal(firstDay, lastDate, date, monthName, year) {
    // constant table settings
    var headerHeight = 35 // height of the table's header cell
    var border = 0 // 3D height of table's border
    var cellspacing = 0 // width of table's border
    var headerColor = "00008b" // color of table's header
    var headerSize = "+2" // size of tables header font
    var colWidth = 45 // width of columns in table
    var dayCellHeight = 15 // height of cells containing days of the week
    var dayColor = "000000" // color of font representing week days
    var cellHeight = 25 // height of cells representing dates in the calendar
    var todayColor = "red" // color specifying today's date in the calendar
    var timeColor = "purple" // color of font representing current time
    var dayCellcolor="87ceda"
    var monthColor="6485ed"

    // create basic table structure
    var text = "" // initialize accumulative variable to empty string
    text += '<CENTER>'
    text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>' // table settings
    text += 	'<TH COLSPAN=7 HEIGHT=' + headerHeight + ' BGCOLOR='+ monthColor +'>' // create table header cell
    text += 		'<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>' // set font for table header
    text += 			monthName + ' ' + year
    text += 		'</FONT>' // close table header's font settings
    text += 	'</TH>' // close header cell

    // variables to hold constant settings
    var openCol = '<TD align=right WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + ' BGCOLOR='+ dayCellcolor +'>'
    openCol += '<FONT SIZE=-1 COLOR="' + dayColor + '">'
    var closeCol = '</FONT></TD>'

    // create array of abbreviated day names
    var weekDay = new Array(7)
    weekDay[0] = "Вс"
    weekDay[1] = "Пн"
    weekDay[2] = "Вт"
    weekDay[3] = "Ср"
    weekDay[4] = "Чт"
    weekDay[5] = "Пт"
    weekDay[6] = "Сб"

    // create first row of table to set column width and specify week day
    text += '<TR ALIGN="center" VALIGN="center">'
    for (var dayNum = 0; dayNum < 7; ++dayNum) {
        text += openCol + weekDay[dayNum] + closeCol
    }
    text += '</TR>'

    // declaration and initialization of two variables to help with tables
    var digit = 1
    var curCell = 1

    for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
        text += '<TR ALIGN="right" VALIGN="top">'
        for (var col = 1; col <= 7; ++col) {
            if (digit > lastDate)
                break
            if (curCell < firstDay) {
                text += '<TD></TD>';
                curCell++
            } else {
                if (digit == date) { // current cell represent today's date
                    text += '<TD HEIGHT=' + cellHeight + ' BGCOLOR="#00FFFF">'
                    text += '<FONT COLOR="' + todayColor + '">'
                    text += '<A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Записать или прочесть запись за ' + monthName + ' ' + digit + '\'; return true"><FONT SIZE=-1 COLOR="' + todayColor + '">' + digit + '</FONT></A>'
                    text += '<BR>'
                    text += '<FONT COLOR="' + timeColor + '" SIZE=2>'
                    text += '<CENTER>' + getTime() + '</CENTER>'
                    text += '</FONT>'
                    text += '</TD>'
                } else
                    text += '<TD HEIGHT=' + cellHeight + ' BGCOLOR="#C0C0C0"><FONT SIZE=-1><A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Записать или прочесть запись за ' + monthName + ' ' + digit + '\'; return true">' + digit + '</A></FONT></TD>'
                digit++
            }
        }
        text += '</TR>'
    }

    // close all basic table tags
    text += '</TABLE>'
    text += '</CENTER>'

    // print accumulative HTML string
    document.write(text)
}

setCal()

// -->


Пример скриптов на языке JavaScript, Информация о броузере

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Информация о броузере.

Существуют броузеры, не поддерживающие некоторых возможностей JavaScript. Поэтому, чтобы не возникало ситуаций, когда броузер пользователя не видит чего-либо в вашем документе, можно использовать свойства объекта Navigator: appName и appVersion, которые определяют имя и версию броузера. В зависимости от версии броузера можно осуществлять вызов того или иного документа.
Например, на платформах с 16-разрядной Windows обращение к функции eval() приводит к краху Netscape Navigator 2.0. Поэтому, если мы посмотрим пример с изменением картинки, где используется эта функция, то в нем как раз анализируется имя и версия броузера.

Пример:
<html><head>
<title>Броузер</title>
</head>
<body bgcolor=ffffff>
<center><table border=1>
<tr><td>Имя броузера</td><td>
<script language="JavaScript">
document.write(navigator.appName);</script></td>
<tr><td>Версия броузера</td><td>
<script language="JavaScript">
document.write(navigator.appVersion);</script></td>
<tr><td>Кодовое название броузера</td><td>
<script language="JavaScript">
document.write(navigator.appCodeName);</script></td>
<tr><td>Заголовок пользовательского <br>агента</td><td valign=top>
<script language="JavaScript">
document.write(navigator.userAgent);</script></td>
</table><center>
</body>
</html>


Примеры JavaScript

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Для вывода текущей даты используется объект Date и метод write объекта document.

<SCRIPT LANGUAGE="JavaScript">
   current_date = new Date();
   document.write("<p><i>Текуща\я дата:</i> " +
   current_date + ".<p>");
</SCRIPT>

Также можно вывести сокращенный вариант для этого используются методы getDate, getMonth, getYear. Обратите внимание, что нумерация месяцев начинается с нуля.

<SCRIPT LANGUAGE="JavaScript">
  current_date = new Date();
  document.write("<i>Число:</i> " + current_date.getDate() +
  "." + current_date.getMonth() + "." + current_date.getYear() + ".");
</SCRIPT>

Или такой вариант:

<SCRIPT LANGUAGE="JavaScript">
  current_date = new Date();
  document.write("<i>Врем\я:</i> " + current_date.getHours() +
  "." + current_date.getMinutes() + "." + current_date.getSeconds() +   ".");
</SCRIPT>


Примеры скриптов для клиента на языке JavaScript

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Бельтикова Н.В., РНЦ "Курчатовский институт"

Примеры простых скриптов для клиента на языке JavaScript.

  • идущие часики (4 примера);
  • бегущая строка (2 примера);
  • информация о документе (2 примера);
  • история посещений;
  • информация о броузере;
  • информация о дате последнего изменения документа;
  • изменение фона документа (2 примера);
  • вывод окна сообщений (3 примера).
  • вывод даты (3 примера).

Примеры скриптов посложнее.

  • гистограмма;
  • изменение картинки (3 примера).

Примеры скриптов от Алексея Александрова.

  • Органайзер;
  • Графические часы.

Источники информации:

  1. "Справочник Web-мастера", Стивен Спейнаур и Валери Куэрсиа, Издательство BHV
  2. Документация по JavaScript (Netscape)


Примеры скриптов на языке JavaScript, Бегущая строка

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Бегущая строка

Бегущая строка в строке статуса

<html>
<head>
<title>Бегущая строка</title>
<script language="javascript">
function statusmessageobject(p,d) {
  this.msg = message
  this.out = " "
  this.pos = position
  this.delay = delay
  this.i     = 0
  this.reset = clearmessage
}
function clearmessage() {
  this.pos = position
}
var position = 100
var delay    = 40
var message  = "Центр информационных"
             + "  технологий"
var scroll = new statusmessageobject()
function scroller() {
  for (scroll.i = 0; scroll.i < scroll.pos; scroll.i++) {
    scroll.out += " "
  }
    if (scroll.pos >= 0)
   scroll.out += scroll.msg
  else scroll.out = scroll.msg.substring(-scroll.pos,scroll.msg.length)
  window.status = scroll.out
  scroll.out = " "
  scroll.pos--
    if (scroll.pos < -(scroll.msg.length)) {
   scroll.reset()
  }
    setTimeout ('scroller()',scroll.delay)
}
</script>
</head>
<body   bgcolor="#000000"  onLoad="scroller()">
</body> </html>

Бегущая строка в поле form.

<html>
<head>
<title>Бегущая строка</title>
</head>
<script language="JavaScript">
var line="Центр Информационных Технологий    ";
var speed=150;
var i=0;
function m_line() {
  if(i++<line.length) {
    document.cit.forum.value=line.substring(0,i);
  }
else{
  document.cit.forum.value=" ";
  i=0;
  }
setTimeout('m_line()',speed);
}
</script>
<body bgcolor=000000>
<center>
<form name=cit>
<input type=text size=32 name=forum>
</form>
</center>
<script language="JavaScript">
m_line();
</script>
</body>
</html>


Примеры скриптов на языке JavaScript, Гистограмма

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Гистограмма построена с использованием свойства images[ ] объекта Document.

<html>
<head>
<script language="JavaScript">
i=0
function d_rand() {
         for(j=0;j<10;j++) {
     for(i=0;i<10;i++) document.images[j+i*10].src = "white.jpg"
         y= Math.floor(Math.random()*10)
         for(i=9;i>9-y;i--) document.images[j+i*10].src = "blue.jpg"
         }
}
</script>
<body bgcolor=ffffff>
<center>
<table border=0>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20  height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<td><img src="white.jpg" width=20 height=10></td>
<tr><td colspan=10><img src="blue.jpg" width=250 height=2></td></tr>
</table>
<form name=diagram>
<input name=random type=button value=click onClick="d_rand()">
</form>
</center>
</body>
</html>


Примеры скриптов на языке JavaScript, Идущие часики

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Идущие часики

Идущие часики можно поместить в строке статуса и в поле form. (Реализация объекта Date в Netscape Navigator 2.0 содержит ошибки)
Первый пример - скрипта, создающего часики в строке статуса при загрузке документа:

<html>
<head>
<title>Clock in status bar</title>
<script language="JavaScript">
function clock_status()
         {
         window.setTimeout("clock_status()",100);
     today=new Date();
     self.status=today.toString();
     }
</script>
</head>
<body background="ffffff" onLoad="clock_status()">
</body>
</html>

Второй пример - скрипта, создающего часики (в сокращенном варианте) в поле form

<html>
<head>
<title>Clock</title>
<script language="JavaScript">
function clock_form()
         {
     day=new Date()
     clock_f=day.getHours()+":"+day.getMinutes()+":"+day.getSeconds()
     document.form.f_clock.value=clock_f
         id=setTimeout("clock_form()",100)
     }
</script>
</head>
<body bgcolor="ffffff" onLoad="clock_form()">
<center>
<form name=form metod="get">
<input name=f_clock maxlength=8 size=8>
</form>
</center>
</body>
</html>

Третий пример - еще один вариант отображения часиков. Причем обратите внимание, что функция вызывается в теле документа, а не в HTML-теге <body> как в предыдущем примере.

<html>
<head>
<title>Clock full</title>
</head>
<script language="JavaScript">
function fulltime() {
    var time=new Date();
    document.clock.full.value=time.toLocaleString();
    setTimeout('fulltime()',500)
}
</script>
<body bgcolor=ffffff  text=ff0000>
<center>
<form name=clock>
<input type=text size=17 name=full>
</form>
<script language="JavaScript">
fulltime();
</script>
</center>
</body>
</html>

В четвертом примере часики с "P.M." и "A.M."

<html>
<head>
<title>Clock</title>
<script language="JavaScript">
var timer=null;
var timerrun=false;
function stoptime() {
    if(timerrun)
    clearTimeout(timer);
    timerrun=false;
}
function starttime() {
    stoptime();
    showtime();
}
function showtime() {
var all=new Date();
var hours=all.getHours();
var minutes=all.getMinutes();
var seconds=all.getSeconds();
var timevalue=" " + ((hours>12) ? hours-12 : hours)
timevalue += ((minutes<10) ? ":0" : ":") + minutes
timevalue += ((seconds<10) ? ":0" : ":") + seconds
timevalue +=(hours>=12) ? "P.M." : "A.M."
document.clock.next.value=timevalue;
timer=setTimeout('showtime()',1000);
timerrun=true;
}
</script>
<body bgcolor=ffffff text=ff0000 onLoad="starttime()">
<center>
<form name=clock>
<input type=text name=next size=12 value=' '>
</center>
</form>
</body>
</html>


Примеры скриптов на языке JavaScript, Изменение картинки

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Изменение картинки

В данном примере для этого используется свойство images[ ] объекта Document.

<html>
<head>
</head>
<script language="JavaScript">

<!-- анализируется версия броузера:-->
browserName=navigator.appName;
browserVer=parseInt(navigator.appVersion);
if (browserName=="Netscape" && browserVer >= 3) version="n3";
else version="n2";

if (version=="n3") {
graph1green=new Image(20,20);
graph1green.src="lgcit.gif";
graph1red=new Image(20,20);
graph1red.src="logo.gif";
}
function graphON(graphName) {
    if (version=="n3") {
    green_red=eval(graphName + "green.src");
    document.images[graphName].src=green_red;
    }
}
function graphOFF(graphName) {
    if (version=="n3") {
    red_green=eval(graphName + "red.src");
    document.images[graphName].src=red_green;
    }
}
</script>
<body bgcolor=ffffff>
<a href="http://www.cit-forum.com" onMouseOver="graphON('graph1')"
onMouseOut="graphOFF('graph1')"><img src="logo.gif" name="graph1" border=0></a>
</body>
</html>

В предыдущем примере изменение происходило при попадании курсора мыши в область картинки и при выходе курсора из нее. В данном примере это организовано в цикле для двух картинок с использованием метода setTimeout.
Работает только в Netscape Navigator 3.0 и выше!

<html>
<head>
<title>Баннер</title>
</head>
<script language="JavaScript">
i=0;
img_a=new Array()
img_h=new Array()
img_a[0]=new Image()
img_a[1]=new Image()
img_a[0].src="logo.gif"
img_a[1].src="lgcit.gif"

function img_b()
{
document.images[0].src=img_a[i].src
document.images[0].src=img_a[i].src
i++
if(i>1) i=0;
setTimeout("img_b()", 2000)
}

</SCRIPT>
</head>
<body bgcolor="#ffffff" onLoad=img_b()>
<img src="logo.gif">
</body></html>

Изменение картинки при загрузке документа в зависимости от текущего времени осуществляется с использованием объекта Date.
Работает во всех броузерах, поддерживающих JavaScript.

<html>
<head>
<title>Баннер</title>
</head>
<script language="JavaScript">

function ban()
{
j=(new Date()).getSeconds()%2
this[0]="logo.gif"
this[2]="lgcit.gif"
document.write("<img src=",this[2*j],">")

return (" ");

}

</script>
</head>
<body bgcolor="#ffffff">
<SCRIPT>
document.write(ban())
</SCRIPT>
</body></html>


Примеры скриптов на языке JavaScript, Изменение фона документа

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Изменение фона документа.

Изменение фона документа при выборе кнопки с названием цвета. При этом используется свойство bgColor объекта Document.Свойство bgColor в Netscape Navigator 2.0 содержит ошибки.

<html>
<head>
<title>bgcolor</title>
</head>
<body text=000000 bgcolor=ffffff>
<table border=0 align=center>
<tr><td><form>
<input type=button value="красный" onClick="document.bgColor='ff0000'">
<input type=button value="желтый" onClick="document.bgColor='ffff00'">
<input type=button value="синий" onClick="document.bgColor='0000ff'">
<input type=button value="голубой" onClick="document.bgColor='87ceeb'">
<input type=button value="коралловый" onClick="document.bgColor='ff7f50'">
</form></td>
</table>
</body>
</html>

Документ с изменяющимся фоном.

<html>
<head>
<title>Изменение фона документа</title>
<script>
function bg_Array() {
  this.length = bg_Array.arguments.length
  for (var i = 0; i< this.length; i++)
    this[i+1] = bg_Array.arguments[i]
}
var bg_Chars = "0123456789ABCDEF";
function Dec2Hex (Dec) {
  var a = Dec % 16;
  var b = (Dec - a)/16;
  hex = "" + bg_Chars.charAt(b) + bg_Chars.charAt(a);
  return hex;
}
function bg_Changer (begin, end, steps) {
  steps = steps -1 ;
  redA     = begin.charAt(0) + begin.charAt(1);
  red_valA = parseInt(redA,'16');
  redB     = end.charAt(0) + end.charAt(1);
  red_valB = parseInt(redB,'16');
  red_int  = ((red_valB - red_valA) / steps) * -1;
  grnA     = begin.charAt(2) + begin.charAt(3);
  grn_valA = parseInt(grnA,'16');
  grnB     = end.charAt(2) + end.charAt(3);
  grn_valB = parseInt(grnB,'16');
  grn_int  = ((grn_valB - grn_valA) / steps) * -1;
  bluA     = begin.charAt(4) + begin.charAt(5);
  blu_valA = parseInt(bluA,'16');
  bluB     = end.charAt(4) + end.charAt(5);
  blu_valB = parseInt(bluB,'16');
  blu_int  = ((blu_valB - blu_valA) / steps) * -1;
  step = 2;
  red = red_valA;
  grn = grn_valA;
  blu = blu_valA;
  document.bgColor = begin;
  while ( steps >= step ) {
    red -= red_int;
    red_round = Math.round(red);
    red_hex = Dec2Hex(red);
    grn -= grn_int;
    grn_round = Math.round(grn);
    grn_hex = Dec2Hex(grn);
    blu -= blu_int;
    blu_round = Math.round(blu);
    blu_hex = Dec2Hex(blu);
    document.bgColor = red_hex + grn_hex + blu_hex;
    step++;
  }
  document.bgColor = end;
}
for (j=0;j<5;j++) {
  bg_Changer("ffff00","00ff00",50);
  bg_Changer("00ff00","ff0000",50);
  bg_Changer("ff0000","0000ff",50);
  bg_Changer("0000ff","f0ffff",50);
  bg_Changer("f0ffff","7fff00",50);
  bg_Changer("7fff00","ff00ff",50);
  bg_Changer("ff00ff","00ffff",50);
  bg_Changer("00ffff","eee8aa",50);
  bg_Changer("eee8aa","ffb6c1",50);
  bg_Changer("ffb6c1","98fb98",50);
  bg_Changer("98fb98","afeeee",50);
}
</script>
</head>
<body>
</body>
</html>


Примеры скриптов на языке JavaScript, Информация о дате последнего изменения документа

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Информация о дате последнего изменения документа.

Для этого в HTML-теге <body> используется свойство lastModified объекта Document. В данном примере такая информация выводится в строку статуса.

<body onLoad="status=document.lastModified">


Примеры скриптов на языке JavaScript, Информация о документе

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

Информация о документе.

Такая информация может быть помещена в строке статуса при загрузке документа. Для этого в HTML-тэг <body> добавлен атрибут onLoad="status='Примеры скриптов. Центр Информационных Технологий'"

Также при попадании указателя мыши в область ссылки вместо имени файла, появляющегося в строке статуса, можно поместить информацию об этом документе.
Примеры скриптов для клиента на языке JavaScript

Обратите внимание, что при загрузке документа в строке статуса одна информация, при попадании указателя мыши в область ссылки - другая, а после выхода указателя мыши из области ссылки - третья. Для этого в HTML-теге <a> добавлены обработчики событий onMouseOver и onMouseOut и свойство status объекта Window:

onMouseOver="status='Примеры скриптов' ;return true"
onMouseOut="status='Центр Информационных Технологий' ;return true"

Информацию также можно выводить в диалоговое окно, при этом выполнение программы не прерывается. Для этого используется метод alert() объекта Window и обработчик событий onMouseOver, включенные в HTML-тег <a>. В окне есть кнопка "OK", которая закрывает диалоговое окно.
Например, при попадании указателя мыши в область ссылки открывается диалоговое окно с каким-либо сообщением (лучше, если оно будет не на русском языке) http://www.cit-forum.com.

 onMouseOver="alert('Server for Information Technologies')"


Примеры скриптов на языке JavaScript, История посещений

E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

История посещений.

Использование объекта History предоставляет возможность возвращаться на URL, который был посещен перед этим (что эквивалентно щелчку на кнопке BACK), и переходить на URL, посещенный перед этим (что эквивалентно щелчку на кнопке FORWARD). Список посещенных URL содержится в меню GO броузера Netscape Navigator.
Делается это, используя методы объекта History: back() и forward(). Для этого в HTML-тег <a> включается следующая строка:

<a href="javascript:history.back()">НАЗАД</a>
или
<a href="javascript:history.forward()">ВПЕРЕД</a>

Если необходимо вернуться на несколько позиций списка меню GO, то используется метод go(), в скобках указывается целочисленный аргумент (отрицательное значение которого соответствует количеству шагов НАЗАД, положительное -ВПЕРЕД). Например, для возврата на три позиции назад указывается go(-3), вперед - go(3).

Обратите внимание: если нет посещенных перед этим URL, то это не будет работать.


Баннер

Не забудьте закрыть окно!


Броузер

Имя броузера
Версия броузера
Кодовое название броузера
Заголовок пользовательского
агента


Clock in status bar

Не забудьте закрыть окно!


Clock

Не забудьте закрыть окно!


Clock full

Не забудьте закрыть окно!


bgcolor

Не забудьте закрыть окно!