HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Hier werben | Impressum |
 

 
 

Anzeige 
 
               Forum
 
 
HTMLWorld » JavaScript » Microsoft: Compiler

JavaScript: Microsoft: Compiler

von Jan Winkler

Microsofts Browser besitzt ein Feature welches es erlaubt bestimmte Abschnitte des Quellcodes ein- bzw. auszuschließen. Dieses Feature, die bedingte Kompilierung, ist ab dem Internet Explorer 4.0 verfügbar. Dabei handelt es sich nicht wirklich um eine Kompilierung, sondern eher um ein umsteuern des Interpreters.

Anzeige

JScript 4.0 Anweisungen  nach oben

Mit Hilfe der bedingten Kompilierung lässt sich der Interpreter (oder eben Compiler - wie man ihn auch nennen mag) steuern. So kann beispielsweise zuerst die Browser-Version abgefragt werden, bevor ein gewisser Abschnit zur Ausführung frei gegeben wird. Eine Anweisung beginnt immer mit einem @-Zeichen. Diesem folgt dann der Name der Anweisung. Dabei ist darauf zu achten, dass möglichst alle Kompiler-Anweisungen innerhalb von Kommentaren stehen, damit diese nicht von anderen bzw. früheren Browsern falsch interpretiert werden können. Bei Kommentaren ist zu beachten, dass die Anweisungen gleich nach dem öffnenden Kommentarzeichen (/*) anschließen (also /*@... statt /* @...). Ein weiteres @-Zeichen sollte folgen, ein Kommentar beendet wird (also @*/). Beispiel:

/*@cc_on @*/
...
/*@Anweisung
  ...
@*/ 

JScript 4.0 @cc_on  nach oben

Die @cc_on-Anweisung schaltet die bedingte Kompilierung ein. Sie sollte vor allen anderen Kompiler-Anweisungen stehen. Beispiel:

/*@cc_on @*/ 

JScript 4.0 @if  nach oben

Die @if-Anweisung funktioniert im Grunde wie eine normale JavaScript -Abfrage. Nach dieser Anweisung sollte innerhalb von runden Klammern ( ( und ) ) eine Bedingung folgen. Wird diese Bedingung mit true (also wahr) ausgewertet, so wird der danach folgende Code geparsende (durch den Kompiler untersucht/vorbereitet). Dies gilt bis zum nächsten Auftreten eines @end-Aufrufes Die bei der Bedinung auszulösenden Anweisungen können dabei auch innerhalb eines Kommentares stehen, sodass sie von anderen Browsern nicht beachtet werden. Beispiel:

/*@cc_on @*/

/*@if (@_win16) @*/
alert('Sie benutzen kein Windows 95, NT oder höher!');
/*@end @*/

/*@if (@_win32) 
  alert('Sie benutzen Windows 95, NT oder höher!');
  @end
@*/ 

Das Resultat ist folgendes: Bei einem Windows 32 System (z.B. Win95, 98, NT ...) ist die Variable @_win16 = false, der folgende Code wird also nicht ausgeführt. Die Variable @_win32 ist jedoch true und der folgende Code wird ausgeführt.

JScript 4.0 @elif  nach oben

Durch die @elif-Anweisung wird eine Zusätzliche Bedingung angeschlossen, wenn eine vorausgehende Bedingung mit false ausgewertet wurde. Man kann sie mit dem Syntax else if(){} vergleichen. Die Notation ist ebenso wie bei @if (es wird eine Klammer mit einer Bedingung angeschlossen). Beispiel:

/*@cc_on 
  if (@_win16)
  alert('Sie benutzen kein Windows 95, NT oder höher!');
  @elif (@_win32)
  alert('Sie benutzen Windows 95, NT oder höher!');
  @end
@*/ 

Das Beispiel ist mit dem von @if zu vergleichen. Beachten Sie bitte dabei, dass vor der @elif-Anweisung keine @end-Anweisung stehen darf, da die Bedinungsanweisungen an diesem Punkt noch nicht beendet sind.

JScript 4.0 @else  nach oben

Die @else-Anweisung kommt einer normalen else-Anweisung gleich. Dabei wird der nachfolgende Code ausgeführt wenn zuvor eine @if- oder/und @elif-Abfrage mit false ausgewertet wurde/n. Beispiel:

/*@cc_on 
  @if (@_win16) 
  alert('Sie benutzen kein Windows 95, NT oder höher!');
  @elif (@_win32) 
  alert('Sie benutzen Windows 95, NT oder höher!');
  @else 
  alert('Sie benutzen kein Windows-System!');
  @end
@*/ 

Das Beispiel erweitert das Beispiel von @elif um einen zusätzlichen Weg. Wurden dabei beide Bedingungen mit false ausgewertet, wird die Anweisung(en) nach @else ausgeführt.

JScript 4.0 @end  nach oben

Die @end-Anweisung beendet eine Bedinungsanweisung oder Bedinungsanweisungen. Beispiel siehe @if-, @elif- und @else-Anweisungen.

JScript 4.0 @set  nach oben

Die @set-Anweisung erstellt eine Variable die bei der bedingten Kompilierung verwendet werden kann. Die Variable muss dabei ein @-Zeichen als Namensbeginn aufweisen und wird hinter der @set-Anweisung definiert. Mit Hilfe des Zuweisungsoperators (=) kann der Variablen ein Wert gegeben werden. Beispiel:

/*@cc_on
@set @meineVariable = 4
@if (@_jscript_version < @meineVariable)
alert('JScript unter Version 4');
@else
alert('JScript ab Version 4');
@end @*/ 

JScript 4.0 Kompilervariablen  nach oben

Zusätzlich stellt der Kompiler eine Reihe von eigenen Variablen auf, die die Anpassung ermöglichen. Zu diesen gehören:

  • @_alpha - true/NaN für die Verwendung eines DEC Alpha-Prozessors.
  • @_jscript - immer true.
  • @_jscript_build - gibt die Build-Nummer des JScript-Modules.
  • @_jscript_version - gibt die Versions-Nummer des JScript-Modules.
  • @_PowerPC - true/NaN für die Verwendung eines Motorola PowerPC-Prozessor.
  • @_mac - true/NaN für die Verwendung eines Macintosh-Systems.
  • @_mc680x0 - true/NaN für die Verwendung eines Motorola 680x0-Prozessors.
  • @_win16 - true/NaN für die Verwendung eines Win16-System.
  • @_win32 - true/NaN für die Verwendung eines Win32-System.
  • @_x86 - true/NaN für die Verwendung eines Intel-Prozessors.

Bitte beachten Sie, dass eine nicht-zutreffende Variable nicht false sondern nicht-definiert (NaN) ist. Die Bedinung @if(@_win16 == false) wird somit immer mit false ausgewertet. Dies kann unter Umständen sogar zu Fehlern führen!


Anzeige

« zurück weiter »
Bewerten

 

JavaScript

.Autor:Jan Winkler.
. Bewertung:
.
. Community: 682 Beiträge im JavaScript Forum .

Navigation




 
     
 

Anzeige