Spezialthema

This page has been robot translated, sorry for typos if any. Original content here.

18 Scripts

18.1 Einführung in die Skripte

Client - Skript - ein Programm , das ein HTML - Dokument begleiten kann oder direkt in sie eingebettet sein. Dieses Programm läuft auf dem Client-Rechner, wenn das Dokument geladen wird, oder zu anderen Zeiten, wie zum Beispiel, wenn die Verbindung aktiviert wird. Unterstützung von HTML-Skripten hängt nicht von der Skriptsprache.

предлагают авторам средства усиления интерактивности документов HTML. Scripts bieten Autoren ein Mittel um die Interaktivität von Dokumenten HTML - Code zu verbessern. Zum Beispiel:

  • Scripts können während des Dokuments Laden und dynamisch ändern, den Inhalt des Dokuments bewertet werden.
  • Scripts können in Form von Eingangsdaten für die Verarbeitung verwendet werden. Designer können ausfüllen dynamisch die Formularfelder in Abhängigkeit von den Werten anderer Felder. Sie können prüfen, ob die Eingangsdaten fallen innerhalb eines vorbestimmten Bereichs von Werten entsprechen Felder etc.
  • Skripte können Ereignisse enthalten, die das Dokument, wie Beladen, Entladen, Element Fokus, Mausbewegungen beeinflussen, usw.
  • Scripts können binden Steuerungen (zB Knöpfe) zu bilden, die Elemente der Benutzerschnittstelle darzustellen.

Autoren können auf ein HTML-Dokument, zwei Arten von Skripten anhängen:

  • выполняющиеся один раз при загрузке документа агентом пользователя. Scripts ausgeführt einmal , wenn das Dokument durch den User - Agent geladen ist. Skripte werden im Element beschrieben das Skript ausgeführt , wenn das Dokument geladen wird. Der User - Agent nicht Skripte verarbeiten können Autoren definieren alternative Inhalte über das Element ein NOSCRIPT .
  • выполняемые каждый раз, когда происходит определенное событие. Scripts ausgeführt jedes Mal , wenn ein bestimmtes Ereignis eintritt. Diese Skripten können auf eine Reihe von Elementen mit den Attributen zugeordnet werden , interne Ereignisse .

Hinweis. Weitere Einzelheiten sind in den Abschnitten zu den angegebenen Makro - Skripts .

18.2 Planung Dokumente für User - Agents , die Scripting - Unterstützung

In den folgenden Abschnitten sind User-Agents, die Scripting unterstützen.

18.2.1 Element SCRIPT

  <Die ELEMENT! Die SCRIPT - - % der Schrift;  - Der Ausdruck Skript ->
 <! ATTLIST SCRIPT
  die charset % Charset;  #IMPLIED - Die Zeichencodierung der verlinkten Ressource -
  des Typs % der Content;  #REQUIRED - Inhaltstyp der Skriptsprache -
  Sprache ein CDATA #IMPLIED - Name seripta vordefinierte Sprache -
  die src % der URI;  #IMPLIED - URI externes Skript -
  die defer (die defer) #IMPLIED - User - Agent kann die Ausführung des Skripts verschieben -
  >

Start - Tag: erforderlich, End - Tag: erforderlich

Attributdefinitionen

die src = die uri [CT]
Dieses Attribut gibt die Position eines externen Skript.
vom Typ = die inhalts des Typs [CI]
Dieses Attribut gibt den Elementinhalt der Skriptsprache und hat Vorrang vor der Sprache des Skripts, die Standardeinstellung. Skriptsprache ist als Inhaltstyp angegeben (zB "text / javascript"). Autoren sollten den Wert dieses Attribut angeben. Der Standardwert ist nicht für dieses Attribut angegeben.
Sprache = CDATA [CI]
Nicht empfohlen. Dieses Attribut gibt die Skriptsprache des Elements Inhalt. Sein Wert ist für die Sprachkennung, sondern als Bezeichner nicht standardisiert sind, dieses Attribut ist unerwünscht, stattdessen müssen Sie das type - Attribut zu verwenden.
die defer [CI]
Wenn dieses Boolesche Attribut gesetzt ist, stellt es einen Hinweis auf den User-Agent, der das Skript den Inhalt des Dokuments (zum Beispiel "document.write" in JavaScript) nicht generieren und somit kann der User-Agent-Analyse und Präsentation des Dokuments fortzusetzen.

Anderer Stelle definierte Attribute

Element SCRIPT setzen Sie das Skript in dem Dokument. Dieses Element kann in dem Element angegeben werden , HEAD oder BODY eines HTML - Dokuments mehrmals.

Das Skript kann im Inhalt SCRIPT - Element oder in einer externen Datei definiert werden. Wenn kein Attribut gesetzt , die src Benutzerprogramme müssen den Inhalt des Elements als das Skript zu interpretieren. Wenn das Attribut src an qualifizierte URI gesetzt ist, können Benutzer - Agenten müssen den Inhalt dieses Element ignorieren und das Skript über die URI laden. Beachten Sie, dass das Attribut charset auf das bezieht sich Zeichenkodierung des Skripts durch ein Attribut bezeichnet src ; es bezieht sich nicht auf Content - Elemente SCRIPT .

Skripte werden Script - Kern ausgewertet , die der User - Agent muss wissen.

Die Syntax von Skriptdaten hängt von der Skriptsprache.

18.2.2 Festlegen der Skriptsprache

Da HTML-Dokument keine spezielle Skriptsprache vorschlagen, dokumentieren Autoren ausdrücklich Benutzeragenten die Sprache jedes Skript sagen muss. Dies kann mit dem Standard-Skript Erklärung oder durch eine lokale Anzeige erfolgen.

Standard - Sprache Skript  

Autoren sollten die Skriptsprache für alle Standard Skript im Dokument angeben , umfassen die folgende Ankündigung META - Tag des HEAD :

  <Meta http-equiv = "Content-Script-Type" content = "Typ">

wobei "Typ" - Art des Inhalts , den Skriptnamen Sprache. Beispiele für Werte sind "text / tcl", "text / javascript", "text / vbscript".

Wenn die Anzeige nicht , ist die META kann der Standardwert über den HTTP - Header "Content-Script-Type" eingestellt werden.

  Inhalt-Script-Type: Typ

wobei "Typ" - der Inhaltstyp die Skriptsprache zu benennen.

Benutzerprogramme sollten die Sprache des Skripts für das Standarddokument in Übereinstimmung mit den folgenden Aktionen (Priorität vom höchsten zum niedrigsten) bestimmen:

  1. Wenn die Ankündigung META "Content-Script-Type" angegeben, wird die Standardsprache des Skripts die letzte solche Ankündigung im Zeichenstrom gegeben.
  2. Andernfalls, wenn angegeben in HTTP-Header "Content-Script-Type" ist die Standardsprache des Skripts die letzte solche Ankündigung im Zeichenstrom gegeben.

Dokumente, die nicht die Standardsprache des Skripts angeben, sondern enthält Elemente, die definieren interne Ereignis , nicht korrekt. Benutzerprogramme können versuchen, falsch angegeben Skripte zu interpretieren, sind aber nicht erforderlich. Werkzeuge müssen Informationen über die Standard-Skriptsprache, um falsche Erstellung von Dokumenten zu vermeiden, erzeugen.

Lokalnoe klassifiziert Skriptsprache  

Die Skriptsprache kann für jedes Element eingestellt werden SCRIPT auf den Attributtyp. Wenn nicht anders angegeben, müssen die Standardsprache des Skripts, dieses Attribut für jedes Element gesetzt werden die SCRIPT . Wenn Sie die Standardsprache des Skripts gesetzt, nimmt das type - Attribut Vorrang vor ihm.

In diesem Beispiel erklären wir die Standard-Skriptsprache: "text / tcl". Der Header enthält die Elemente der SCRIPT , das Skript selbst in einer externen Datei befindet und verwendet die Sprache "text / vbscript". Darüber hinaus eines der SCRIPT - Element im Körper des Dokuments und das andere enthält ein Skript in "text / javascript" geschrieben.

  <DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.0 // EN"
  "Http://www.w3.org/TR/REC-html40/strict.dtd">
 <HTML>
 <HEAD>
 <Title> Dokument Skripte </ title>
 <Meta http-equiv = "Content-Script-Type" content = "text / tcl">
 <Script type = "text / vbscript" src = "http://someplace.com/progs/vbcalc">
 </ SCRIPT>
 </ HEAD>
 <BODY>
 <Script type = "text / javascript">
 ... JavaScript - Code ... </ SCRIPT>
 </ BODY>
 </ HTML>

Links von Skript auf HTML - Elemente  

Jede Skriptsprache hat ihre eigenen Konventionen für die im Skript HTML-Objekte verweisen. Diese Spezifikation definiert keinen Standardmechanismus für die Objektreferenzen HTML.

Allerdings sollten Skripte auf die Elemente in Übereinstimmung mit dem Objektnamen beziehen. Scripts Kernel muss mit der Identifizierung der folgenden Prioritätsregeln Element entsprechen: Attribut Name Vorrang vor dem Attribut nimmt id , wenn diese beiden Attribute gesetzt sind. Andernfalls setzen Sie das Attribut.

18.2.3 Interne Ereignisse

Hinweis. Sagt der Autor von HTML - Dokumenten , die auf dem Gebiet der internen Ereignisse (zum Beispiel in Bezug auf die Ereignisse des Skripts) sehr wahrscheinlich ist , zu ändern. Die Arbeit in diesem Bereich wird von den Mitgliedern des W3C (W3C Document Object Model Arbeitsgruppe durchgeführt ) Arbeitsgruppe für das Document Object Model (weitere Informationen finden Sie auf der W3C auf der Web-Seite zu finden http://www.w3.org/ ).

Attributdefinitionen

das onload = script [CT]
OnLoad - Ereignis tritt auf, wenn der User - Agent beendet ein Fenster oder alle Frames Element Laden ein Frameset . Dieses Attribut kann in den Elementen verwendet werden , BODY und einem Frameset .
onunload = script [CT]
Onunload Ereignis tritt auf, wenn der User - Agent dokumentiz Fenster oder Frame entfernt. Dieses Attribut kann in den Elementen verwendet werden , BODY und einem Frameset .
das Onclick = script [CT]
Die Onclick - Ereignis tritt auf, wenn ein einziger Klick auf eine Schaltfläche auf dem Zeigegerät Element. Dieses Attribut kann mit den meisten Elementen verwendet werden.
ondblclick = script [CT]
OnDblClick Ereignis tritt auf, wenn Sie einen Doppelklick auf ein Element Taste des Zeigegeräts über. Dieses Attribut kann mit den meisten Elementen verwendet werden.
onmousedown = script [CT]
Onmousedown Ereignis tritt auf, wenn das Zeigegerät auf einem Element gedrückt wird. Dieses Attribut kann mit den meisten Elementen verwendet werden.
onmouseup = script [CT]
OnMouseUp Ereignis tritt auf, wenn Sie mit dem Zeigegerät Taste über einem Element freigeben. Dieses Attribut kann mit den meisten Elementen verwendet werden.
Onmouseover = script [CT]
Onmouseover Ereignis tritt auf, wenn das Zeigegerät auf ein Element bewegt wird. Dieses Attribut kann mit den meisten Elementen verwendet werden.
onmousemove = script [CT]
OnMouseMove Ereignis passiert , wenn Sie das Zeigegerät bewegen , während er sich über diesem Element befindet. Dieses Attribut kann mit den meisten Elementen verwendet werden.
onmouseout = script [CT]
Onmouseout Ereignis tritt auf, wenn das Zeigegerät außerhalb des Elements bewegt wird. Dieses Attribut kann mit den meisten Elementen verwendet werden.
das onfocus = script [CT]
OnFocus Ereignis auftritt , wenn ein Element den Fokus von einem Zeigegerät oder einen Trichter empfängt. : Dieses Attribut kann mit den folgenden Elementen verwendet werden , die LABEL , der INPUT , SELECT, die TEXTAREA- und zu BUTTON .
das onblur = script [CT]
Onblur Ereignis tritt auf, wenn unter Verwendung der Zeigeeinrichtung oder ein Trichter Fokus von diesem Schaltelement. Es kann mit den gleichen Elementen wie OnFocus verwendet werden.
onkeypress = script [CT]
OnKeyPress - Ereignis tritt auf, wenn eine Taste gedrückt wird und auf einem Element losgelassen. Dieses Attribut kann mit den meisten Elementen verwendet werden.
onkeydown = script [CT]
Onkeydown Ereignis auftritt , wenn eine Taste auf dem Element gedrückt wird. Dieses Attribut kann mit den meisten Elementen verwendet werden.
onkeyup = script [CT]
OnKeyUp - Ereignis tritt auf, wenn eine Taste auf einem Element losgelassen wird. Dieses Attribut kann mit den meisten Elementen verwendet werden.
die onsubmit = script [CT]
OnSubmit Ereignis tritt auf, wenn ein Formular abgeschickt wird. Es ist nur in dem Element verwendet FORM .
onreset = script [CT]
Onreset Ereignis auftritt , wenn ein Formular zurückgesetzt wird. Es ist nur in dem Element verwendet FORM .
onselect = script [CT]
OnSelect Ereignis tritt auf, wenn der Benutzer Zuweisung von einem Text in einem Textfeld. Dieses Attribut kann mit Elementen verwendet werden INPUT und der TEXTAREA- .
das onchange = script [CT]
OnChange - Ereignis tritt auf, wenn der Verlust von Steuerelementeingabefokus, wenn der Wert von dem Moment an, den Fokus des Empfangs geändert wurde. : Dieses Attribut wird mit den folgenden Elementen verwendet INPUT , SELECT und die TEXTAREA- .

Diese Aktion kann auf eine Anzahl von bestimmten Ereignissen zugeordnet werden, die auftreten, wenn ein Benutzer mit dem Agens in Wechselwirkung tritt. Der Wert jedes der oben erwähnten "internes Ereignis" ist das Skript. Dieses Skript wird ausgeführt, wenn das Ereignis für dieses Element auftritt. Die Syntax des Skripts abhängig von der Skriptsprache.

, такие как INPUT , SELECT , BUTTON , TEXTAREA и LABEL реагируют на внутренние события. Bedienelemente , wie der INPUT , SELECT , bis TASTE , die TEXTAREA- und LABEL auf interne Ereignisse reagieren. Wenn sie in der Form nicht angezeigt werden, können sie verwendet werden, um die GUI doumenta zu verbessern.

Zum Beispiel können die Autoren der Dokumente umfassen Schaltflächen, die das Formular verwendet werden, um vor, aber wenn Sie die Taste, die eine gewisse Interaktion mit dem Server erfolgt.

Das folgende Beispiel zeigt das mögliche Verhalten des Steuerelementes und die Benutzeroberfläche entsprechend der internen Ereignissen.

In diesem Beispiel ist Benutzername erforderlich Textfeld ein. Wenn der Benutzer in diesem Feld nicht füllen, das onblur Ereignis ruft eine JavaScript - Funktion , um den Wert von username Feld zu überprüfen.

  <INPUT NAME = "username" onblur = "validUserName (this.value)">

Hier ist ein weiteres Beispiel für JavaScript:

  <INPUT NAME = "num"
  onchange = "if (! checkNum (this.value, 1, 10)) 
  {This.focus (); this.select ();} else {Dank ()} "
  VALUE = "0">

Hier ist ein Beispiel für einen Event-Handler für ein Textfeld in der Sprache VBScript:

  <INPUT name = "edit1" size = "50"> 
  <Script type = "text / vbscript">
  Sub edit1_changed ()
  Wenn edit1.value = "abc" Dann
  button1.enabled = True
  sonst
  button1.enabled = False
  End If
  End Sub
  </ SCRIPT>

Hier ist das gleiche Beispiel Tcl mit:

  <INPUT name = "edit1" size = "50">
  <Script type = "text / tcl">
  proc edit1_changed {} {
  wenn {[edit value] == abc} {
  button1 aktivieren 1
  } Else {
  button1 ermöglichen 0
  }
  }
  edit1 onChange edit1_changed
  </ SCRIPT>

Hier ist ein Beispiel Ereignis in einem Skript in JavaScript zu binden. Um zu beginnen mit einem einfachen Mausklick Handler:

 
 <BUTTON type = "button" name = "MyButton" value = "10">
 <Script type = "text / javascript">
  Funktion my_onclick () {
  .  .  .
  }
  document.form.mybutton.onclick = my_onclick
  </ SCRIPT>
  </ BUTTON>

Hier ist ein interessanter Fenster-Handler:

 
 <Script type = "text / javascript">
  Funktion my_onload () {
  .  .  .
  }
  var win = window.open ( "some / other / URI")
  if (win) win.onload = my_onload
 </ SCRIPT>

In Tcl Sprache ist wie folgt:

  <Script type = "text / tcl">
  proc my_onload {} {
  .  .  .
  }
  gewinnen set [Fenster offen "etwas / other / URI"]
  wenn {$ gewinnen! = ""} {
  $ Win onload my_onload
  }
  </ SCRIPT>

Beachten Sie, dass der Ausdruck "document.write" oder entsprechende Angaben in den internen Ereignishandler erstellen und einen neuen Eintrag in dem Dokument arbeiten und nicht den aktuellen ändern.

18.2.4 Dynamische Modifikation von Dokumenten

Scripts werden ausgeführt, wenn das Dokument geladen wird, kann dynamisch den Inhalt des Dokuments zu ändern. Diese Möglichkeit hängt von der Sprache des Skripts (zum Beispiel der Ausdruck "document.write" im HTML-Objektmodell von einigen Herstellern unterstützt).

Dynamische Änderungen in dem Dokument kann wie folgt modelliert werden:

  1. Alle Elemente SCRIPT ausgewertet werden, um so das Dokument geladen ist.
  2. in diesem Element Wertet alle Bau - Skript das Skript , SGML CDATA erzeugen. Der erzeugte Text wird im Dokument anstelle des Elements eingefügt das Skript .
  3. Die erzeugte CDATA werden erneut ausgewertet.

HTML - Dokumente sind auf das Erfordernis der Einhaltung der DTD HTML - Elemente begrenzt vor und nach dem Umgang mit den SCRIPT .

Das folgende Beispiel zeigt, wie Skripte dynamisch ein Dokument ändern kann. Das folgende Skript:

  <Title> Test-Dokument </ title>
  <Script type = "text / javascript">
  document.write ( "<p> <b> Hallo Welt! <\ / b>")
  </ SCRIPT>

Es hat die gleiche Wirkung wie Markup HTML:

  <Title> Test-Dokument </ title>
  <P> <B> Hallo Welt! </ B>

18.3 Planung Dokumente für User - Agents , die Scripting nicht unterstützen

Die folgenden Abschnitte behandeln die Erstellung von Dokumenten für User-Agents, die nicht Scripting unterstützen.

18.3.1 Element NOSCRIPT

  <Die ELEMENT! A NOSCRIPT - - ( % block; ) +
  - Alternate Inhalt für die Präsentation ohne Skript ->
 <! ATTLIST NOSCRIPT
  % Attrs;  - % Coreattrs , % i18n , % events -
  >

Start - Tag: erforderlich, End - Tag: erforderlich

Element NOSCRIPT erlaubt Autoren alternativen Inhalt angeben , wenn Sie ein Skript nicht ausgeführt wird. Inhalt Element NOSCRIPT sollte durch Benutzeragenten erzeugt werden, die Scripting - Unterstützung, nur in den folgenden Fällen:
  • Der User-Agent ist so konfiguriert, keine Skripte ausgeführt werden.
  • Der User - Agent unterstützt nicht die Skriptsprache verwendet Element der SCRIPT .

Benutzerprogramme, die den Inhalt dieses Element nicht vorlegen Client-Skripte unterstützen muss.

Im folgenden Beispiel wird ein User - Agent dieses Element das Skript , die im Dokument enthalten dynamisch generierten Daten. Wenn der User-Agent nicht Skripte unterstützt, kann der Benutzer die Datenverbindung herunterladen.

  <Script type = "text / tcl">
  ... Skirpt in Tcl Sprachdaten einfügen ... </ SCRIPT>
 <NOSCRIPT>
  <P> Der Zugriff auf Daten <A href="http://someplace.com/data">. </A>
 </ Noscript>

18.3.2 Wie das Skript von Benutzeragenten zu verstecken

Benutzerprogramme , die das Element der nicht erkennen , die SCRIPT , kann sie in Form von Text vorzulegen. Einige Skripte Kernel, einschließlich der Kernel für die JavaScript-Sprache, VBScript und Tcl, Skripting ermöglicht es Ihnen, den Ausdruck Kommentar SGML aufzunehmen. Benutzerprogramme , die das Element der nicht erkennen , die SCRIPT , werden die Kommentare zu ignorieren, und das Skript findet den Kernel und ausführen.

Eine andere Lösung für dieses Problem ist , Skripte in externen Dokumenten zu halten und verknüpfen sie zuschreiben das src .

Kommentar JavaScript - Skripten
Core-JavaScript ermöglicht die Verwendung der Zeichenfolge "<! -" Und der Anfang des Elements SCRIPT und ignoriert weitere Zeichen bis zum Ende der Zeile. JavaScript interpretiert das Symbol "//" als Beginn eines Kommentars zum Ende der aktuellen Zeile erstreckt. Es ist notwendig, dass die Zeichenfolge "->" nicht die Syntax-Parser JavaScript-verstanden.

  <Script type = "text / javascript">
 <! - Ausblenden Skriptinhalt von alten Browsern
  function square (i) {
  document.write ( "Der Aufruf übergeben", i "zu funktionieren.", "<BR>")
  Rückkehr i * i
  }
  document.write ( "Die Funktion zurückgegeben", Quadrat (5), ".")
 // Ende versteckt ->
 </ SCRIPT>

Kommentierte Skripte in VBScript
In VBScript wird der gesamte Text des Kommentars betrachtet, mit einem einfachen Anführungszeichen Zeichen bis zum Ende der Zeile beginnen. : - ">" Von VBScript, naprmer Es kann auf der Saite Kommentar verwendet werden

  <Script type = "text / vbscript">
  <! -
  Sub foo ()
  ...
  End Sub
  '->
  </ SCRIPT>

Kommentierte Skripte in TCL
In Tcl wird der Kommentartext das Symbol "#" vor dem Ende der Leitung in Betracht gezogen:

  <Script type = "text / tcl">
 <! - Ausblenden Skriptinhalt von alten Browsern
  proc square {i} {
  Dokument schreiben "Der Aufruf übergeben i $ an die Funktion. <BR>"
  return [expr $ i * $ i]
  }
  Dokument schreiben "Die Funktion zurückgegeben [Platz 5]."
 # Ende des latenten Inhalt ->
 </ SCRIPT>

Hinweis. Einige Browser finden Sie das Ende der ersten Kommentare ">" Symbol. In diesem Fall können Sie die Operanden für relationale Operatoren und Verschiebung bewegen (zB "y <x" anstelle von "x> y" verwendet wird ) oder verwenden Sie eine bestimmte Sprache in den Skript Abhilfen Zeichen ">".

Wie es? Abonnieren Sie RSS Nachrichten!
Sie können auch shram.kiev.ua unterstützen, klicken Sie auf:

Seien Sie nicht zu Ihren Freunden und finden Sie diese Informationen, teilen mit ihnen den Artikel nicht in Ordnung!

Expand / Collapse Box mit Kommentaren

Kommentare

im Auge kommentierte halten , dass der Inhalt und der Ton Ihrer Nachrichten , die Gefühle von echten Menschen verletzen können, Respekt und Toleranz gegenüber seinen Gesprächspartnern, auch wenn Sie Ihr Verhalten in Bezug auf die Meinungsfreiheit und die Anonymität des Internets, ändert ihre Meinung nicht teilen, nicht nur virtuell, sondern realen Welt. Alle Kommentare werden aus dem Index, Spam - Kontrolle versteckt.
Kostenlose Kreditkarte mit einem Limit von 15.000 US-Dollar.