kramann.info
© Guido Kramann

Login: Passwort:










2.6 Sicheres Funktionieren eines Javascript-Programms

2.6 Safe operation of a Javascript program (EN google-translate)

2.6 Bezpieczna obsługa programu Javascript (PL google-translate)

Welche Möglichkeiten gibt es, das Funktionieren von Javascript-Programmen besser zu gewährleisten, als einfach Kommandos hintereinander weg in ein Skript zu schreiben?

What options are there to ensure the functioning of Javascript programs better, as easy to write consecutive commands away in a script?

Jakie są opcje, aby zapewnić lepsze funkcjonowanie programów JavaScript, tak łatwo zapisać kolejne polecenia w skrypcie?

Wie kann zudem ein dauerhaftes Funktionieren gewährleistet werden, wenn das Programm Basis eines Kiosk-Systems ist?

Furthermore, how can a lasting functioning be ensured if the program is based on a Kiosk system is?

Ponadto, w jaki sposób można zapewnić trwałe funkcjonowanie, jeśli program opiera się na System kiosku to?

Nachfolgend sollen hierzu einige mögliche Maßnahmen aufgezeigt werden.

Here are some possible measures to be shown.

Oto kilka możliwych środków, które należy pokazać.

Programm aufteilen

Split program

Podziel program

Selbst wenn man keinen Objekt orientierten Ansatz verfolgt, läßt sich ein gewisses Maß an Modularisierung durch die bloße Aufteilung des Gesamtprogramms in einzelne Teile, die in voneinander getrennte Dateien mit der Endung .js abgelegt und beim Aufruf der Website alle geladen werden.

Even if one does not pursue an object-oriented approach, a degree of modularization can be achieved by simply splitting the overall program into separate parts, which are divided into separate files filed with the extension .js and loaded when the website is called.

Nawet jeśli nie stosuje się podejścia obiektowego, można osiągnąć pewien stopień modularyzacji poprzez podzielenie całego programu na osobne części, które są podzielone na osobne pliki wypełniony rozszerzeniem .js i załadowany po wywołaniu strony.

<script type="text/javascript" src="mathematische_hilfsfunktionen.js"></script>
<script type="text/javascript" src="zeichnen_besonderer_figuren.js"></script>
<script type="text/javascript" src="beurteilen_der_richtigkeit_von_eingaben.js"></script>
<script language:javascript>
    //Hauptteil des Programms, in dem Parameter festgelegt und Variablen definiert werden und
    //Funktionen aus den zugeladenen Teilen aufgerufen werden.
</script>

Code 2.6-1: Nachladen von Javascript-Programmteilen.

Da hierbei neben der übersichtlicheren besseren Strukturierung leider auch etwas an Transparenz verloren geht, da man nicht ständig alle Programmteile vor sich hat, muß auch ohne Objekt orientierten Ansatz einige Mühe darin verwendet werden, die Kopplung der Programmteile untereinander gering zu halten.

Unfortunately, in addition to the clearer structuring, there is also a loss of transparency, Since you do not constantly have all the program parts in front of you, even without an object-oriented approach, some must Trouble be used to keep the coupling of the program parts to each other low.

Niestety, oprócz bardziej przejrzystej struktury, występuje również utrata przejrzystości, Ponieważ nie zawsze masz wszystkie części programu przed sobą, nawet bez podejścia zorientowanego obiektowo, niektóre muszą Problem może być używany do utrzymywania niskiego sprzężenia części programu.

Schlecht wäre beispielsweise, wenn Variablen in einem Teil definiert und in einem anderen mit benutzt werden. Dies kann dadurch vermieden werden, dass solche Variablen stets an Funktionen übergeben werden müssen. So wird sichtbar, dass sie benötigt werden. Tendenziell werden in den zugeladenen Programmteilen also eher Funktionen stehen.

For example, it would be bad if variables are defined in one part and used in another. This can be avoided by always passing such variables to functions. This makes it clear that they are needed. So tend to be functions in the loaded program part

Na przykład byłoby źle, gdyby zmienne zostały zdefiniowane w jednej części i użyte w innym. Można tego uniknąć, zawsze przekazując takie zmienne do funkcji. To wyjaśnia, że ​​są one potrzebne. Więc wydają się być funkcjami w załadowanych częściach program

Objektorientierung

object orientation

orientacja obiektu

In Javascript gibt es nur Funktionen, die aber auch als Referenz in Variablen gespeichert werden können und auch wiederum selbst Funktionen enthalten können. Außerdem kann man mit dem Schlüsselwort "new" neue Instanzen von Funktionen erstellen.

In Javascript, there are only functions that can be stored as a reference in variables and again may contain functions themselves. You can also use the keyword n create new instances of functions.

W JavaScript istnieją tylko funkcje, które mogą być również przechowywane jako odniesienie w zmiennych i znowu może zawierać same funkcje. Możesz również użyć słowa kluczowego no tworzyć nowe instancje funkcji.

"Klassen" und "Objektinstanzen" lassen sich auf dieser Grundlage u.a. folgendermaßen umsetzen (Beispiel):

Classes and object instances can be based on this basis i.a. implement as follows (example

Klasy i instancje obiektów mogą być oparte na tej podstawie i.a. wykonać w następujący sposób (przykład

//Die "Klasse" ist gleichzeitig "Konstruktor"
function Kontra(oktave)
{
    this.oktave = oktave;

    this.absolut = function(x)
    {
        if(x<0) return -x;
        return x;
    }

    this.oktavsprung = function(x,y)
    {
        if(this.absolut(x-y)==this.oktave) 
            return true;
        else
            return false;
    }
}

Code 2.6-2: Klassen und Objekt mit Javascript: Datei kontra.js

<!DOCTYPE html>
<html>
    <head lang="de">
        <meta charset="iso-8859-1">
        <script type="text/javascript" src="kontra.js"></script>
        <script language:javascript>

            var kontra12 = new Kontra(12);
            var kontra11 = new Kontra(11);

            alert(kontra12.oktavsprung(1,13));
            alert(kontra11.oktavsprung(1,13));
            alert(kontra11.oktavsprung(1,12));
            alert(kontra11.absolut(-122));

            alert(kontra11.oktave);

        </script>
    </head>
    <body>
    </body>
</html>

Code 2.6-3: Klassen und Objekt mit Javascript: Datei kontra.html im gleichen Verzeichnis.

Kapselung

encapsulation

hermetyzacja

//Die "Klasse" ist gleichzeitig "Konstruktor"
function Kontra(okt)
{
    var oktave = okt;

    function absolut(x)
    {
        if(x<0) return -x;
        return x;
    }

    this.oktavsprung = function(x,y)
    {
        if(absolut(x-y)==oktave) 
            return true;
        else
            return false;
    }
}

Code 2.6-4: Klassen und Objekt mit Javascript: Datei kontra_gekapselt.js

<!DOCTYPE html>
<html>
    <head lang="de">
        <meta charset="iso-8859-1">
        <script type="text/javascript" src="kontra_gekapselt.js"></script>
        <script language:javascript>

            var kontra12 = new Kontra(12);
            var kontra11 = new Kontra(11);

            alert(kontra12.oktavsprung(1,13));
            alert(kontra11.oktavsprung(1,13));
            alert(kontra11.oktavsprung(1,12));
            alert(kontra11.absolut(-122));

            alert(kontra11.oktave);

        </script>
    </head>
    <body>
    </body>
</html>

Code 2.6-5: Klassen und Objekt mit Javascript: Datei kontra_gekapselt.html im gleichen Verzeichnis.

Läßt man bei Funktionen und Variablen einer "Javascript-Klasse" das "this" weg, so können diese Elemente nicht von außen zugegriffen werden.

If you leave this for functions and variables of a javascript class, this so these elements can not be accessed from outside.

Jeśli zostawisz to dla funkcji i zmiennych klasy javascript, to więc te elementy nie mogą być dostępne z zewnątrz.

Man erhält eine Art "private"-Elemente.

You get a kind of private elements.

Dostajesz rodzaj prywatnych elementów.

oop.zip - obiges Beispiel.

Vollständigkeit

completeness

kompletność

Befehle einer Skriptsprache werden einzeln der Reihe nach verarbeitet. Beim laden von Dokumenten aus dem Internet mit Skriptteilen kann nicht davon ausgegangen werden, dass die Abarbeitung eines Skripts erst beginnt, wenn es vollständig geladen ist.

Commands of a scripting language are processed one at a time. When loading documents from the Internet with script parts can not do it It can be assumed that the processing of a script does not start until it is is completely charged.

Polecenia języka skryptowego są przetwarzane pojedynczo. Podczas ładowania dokumentów z Internetu za pomocą części skryptów nie można tego zrobić Można założyć, że przetwarzanie skryptu nie rozpocznie się, dopóki nie zostanie jest całkowicie naładowany.

Darum macht es Sinn, die Vollständigkeit des Ladevorgangs abzuprüfen und erst wenn diese gewährleistet ist, ein Programm zu starten.

Therefore, it makes sense to check the completeness of the charging process and only if this is guaranteed, start a program.

Dlatego sensowne jest sprawdzanie kompletności procesu ładowania i tylko jeśli jest to gwarantowane, uruchom program.

Dies geht am einfachsten mit einem Eintrag "onload" im body-Tag und dem damit verknüpften Initialisierungsbefehl eines Programms.

This is easiest with an entry onload in the body tag and the associated initialization command of a program.

Jest to najłatwiejsze z wpisem onload w tagu body i powiązane polecenie inicjalizacji programu.

Die Funktion "initialisieren()" ist dabei eine selbst geschriebene Javascript-Funktion irgendwo in den geladenen Programmteilen. Sie startet alle zu startenden Programmteile und führt nötige Initialisierungen durch.

somewhere in the loaded program parts. It starts all program parts to be started a performs necessary initializations.

gdzieś w załadowanych częściach programu. Zaczyna wszystkie części programu, które należy uruchomić wykonuje niezbędne inicjalizacje.

//....
<body onload="javascript:initialisieren()">
</body>
//....

Code 2.6-6: Beispiel für einen onload-Eintrag.