Скрипти в документах html

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

Примітка. Більш детальна інформація представлена ​​в розділах про макроси скриптів.

18.2 Розробка документів для агентів користувача, що підтримують скрипти

Наступні розділи відносяться до агентам користувачів, що підтримують скрипти.

18.2.1 Елемент SCRIPT

Початковий тег: обов'язковий. Кінцевий тег: обов'язковий

Елемент SCRIPT поміщає скрипт в документа. Цей елемент може вказуватися в елементі HEAD або BODY документа HTML кілька разів.

Скрипт може визначатися у вмісті елементу SCRIPT або в зовнішньому файлі. Якщо не встановлено атрибут src. агенти користувача повинні інтерпретувати вміст елемента як скрипт. Якщо для для атрибута src встановлено значення URI, агенти користувачів повинні ігнорувати вміст цього елементу і завантажувати скрипт через URI. Зверніть увагу, що атрибут charset відноситься до кодування символів скрипта, який призначається атрибутом src; він не відноситься до вмісту елемента SCRIPT.

Скрипти оцінюються ядром скрипта, яке агент користувача повинен знати.

де "тип" - тип вмісту, який іменує мову скрипта.

Документи, в яких не вказано мову скрипта за замовчуванням, але містяться елементи, що задають внутрішні події. некоректні. Агенти користувачів можуть робити спроби інтерпретувати некоректно задані скрипти, але це не обов'язково. Засоби розробки повинні генерувати інформацію про мову скрипта за замовчуванням, щоб уникнути створення некоректних документів.

Мова скрипта можна задавати в кожному елементі SCRIPT за допомогою атрибута type. Якщо не вказано мову скрипта за замовчуванням, цей атрибут повинен встановлюватися для кожного елемента SCRIPT. Якщо заданий мову скрипта за замовчуванням, атрибут type має пріоритет над ним.

Кожна мова скриптів має власні угоди щодо посилань на об'єкти HTML в скрипті. В даній специфікації не визначається стандартний механізм для посилання на об'єкти HTML.

Однак скрипти повинні посилатися на елементи відповідно до призначеного їм ім'ям. Ядро скриптів має дотримуватися при ідентифікації елемента наступні правила пріоритету: атрибут name має перевагу над атрибутом id. якщо встановлені обидва ці атрибута. В іншому випадку використовується встановлений атрибут.

onload = скрипт [CT] Подія onload відбувається, коли агент користувача закінчує завантажувати вікно або всі фрейми елемента FRAMESET. Цей атрибут може використовуватися в елементах BODY і FRAMESET. onunload = скрипт [CT] Подія onunload відбувається, коли агент користувача видаляє документіз вікна або фрейму. Цей атрибут може використовуватися в елементах BODY і FRAMESET. onclick = скрипт [CT] Подія onclick відбувається при одноразовому натисканні кнопки вказівного пристрою на елементі. Цей атрибут може використовуватися з більшістю елементів. ondblclick = скрипт [CT] Подія ondblclick відбувається при подвійному натисканні клавіші указующего пристрою на елементі. Цей атрибут може використовуватися з більшістю елементів. onmousedown = скрипт [CT] Подія onmousedown відбувається при натисканні кнопки вказівного пристрою на елементі. Цей атрибут може використовуватися з більшістю елементів. onmouseup = скрипт [CT] Подія onmouseup відбувається при відпуску кнопки вказівного пристрою на елементі. Цей атрибут може використовуватися з більшістю елементів. onmouseover = скрипт [CT] Подія onmouseover відбувається при переміщенні указующего пристрою на елемент. Цей атрибут може використовуватися з більшістю елементів. onmousemove = скрипт [CT] Подія onmousemove відбувається при переміщенні указующего пристрою, коли воно знаходиться на елементі. Цей атрибут може використовуватися з більшістю елементів. onmouseout = скрипт [CT] Подія onmouseout відбувається при переміщенні указующего пристрою за межі елемента. Цей атрибут може використовуватися з більшістю елементів. onfocus = скрипт [CT] Подія onfocus відбувається при отриманні елементом фокусу за допомогою вказівного пристрою або послідовності переходу. Цей атрибут може використовуватися з наступними елементами: LABEL. INPUT. SELECT. TEXTAREA і BUTTON. onblur = скрипт [CT] Подія onblur відбувається при переході фокусу з цього елемента за допомогою вказівного пристрою або послідовності переходу. Воно може використовуватися з тими ж елементами, що і onfocus. onkeypress = скрипт [CT] Подія onkeypress відбувається при натисканні і відпусканні клавіші на елементі. Цей атрибут може використовуватися з більшістю елементів. onkeydown = скрипт [CT] Подія onkeydown відбувається при натисканні клавіші на елементі. Цей атрибут може використовуватися з більшістю елементів. onkeyup = скрипт [CT] Подія onkeyup відбувається при відпуску клавіші на елементі. Цей атрибут може використовуватися з більшістю елементів. onsubmit = скрипт [CT] Подія onsubmit відбувається при відправці форми. Воно використовується тільки в елементі FORM. onreset = скрипт [CT] Подія onreset відбувається при скиданні форми. Воно використовується тільки в елементі FORM. onselect = скрипт [CT] Подія onselect відбувається при виділенні користувачем деякого тексту в текстовому полі. Цей атрибут може використовуватися з елементами INPUT і TEXTAREA. onchange = скрипт [CT] Подія onchange відбувається при втраті керуючим елементом фокусу введення, якщо його значення було змінено з моменту отримання фокусу. Цей атрибут використовується з наступними елементами: INPUT. SELECT і TEXTAREA.

Дія можна пов'язати з певним рядом подій, що відбуваються при взаємодії користувача з агентом. Значним кожного з перерахованих вище "внутрішніх подій" є скрипт. Цей скрипт виконується, якщо ця подія відбувається для цього елемента. Синтаксис скрипта залежить від мови скрипта.

Елементи управління. такі як INPUT. SELECT. BUTTON. TEXTAREA і LABEL реагують на внутрішні події. Якщо вони не відображаються у формі, вони можуть використовуватися для поліпшення графічного інтерфейсу доумента.

У наступному прикладі показаний можливу поведінку керуючого елемента та інтерфейсу користувача в залежності то внутрішніх подій.

Ось приклад обробника подій для текстового поля на мові VBScript:

Ось той же приклад з використанням Tcl:

Ось більш цікавий обробник вікна:

Мовою Tcl це виглядає наступним чином:

Зверніть увагу, що вираз "document.write" або еквівалентні вирази в обробниках внутрішніх подій створюють і виконують запис в новий документ, а не змінюють поточний.

Скрипти, що виконуються при завантаженні документа, можуть динамічно змінювати вміст документа. Така можливість залежить від самої мови скрипта (наприклад, вираз "document.write" в об'єктної моделі HTML підтримується деякими виробниками).

Динамічна зміна документа може моделюватися наступним чином:

  1. Всі елементи SCRIPT оцінюються по порядку при завантаженні документа.
  2. Оцінюються всі конструкції скрипта в даному елементі SCRIPT. генеруючі SGML CDATA. Згенерований текст вставляється в документ замість елемента SCRIPT.
  3. Згенеровані CDATA оцінюються повторно.

Документи HTML обмежуються вимогою відповідності HTML DTD до і після обробки елементів SCRIPT.

У наступному прикладі показано, як скрипти можуть динамічно змінювати документ. Наступний скрипт:

має той же ефект, що і розмітка HTML:

У наступних розділах обговорюється створення документів для агентів користувачів, які не підтримують скрипти.

18.3.1 Елемент NOSCRIPT

Початковий тег: обов'язковий. Кінцевий тег: обов'язковий

Агенти користувачів, які не підтримують клієнтські скрипти, повинні представляти вміст цього елементу.

У наступному прикладі агент користувача, який виконує елемент SCRIPT. включить в документ динамічно створювані дані. Якщо агент користувача не підтримує скрипти, користувач може завантажити ці дані по посиланню.