Browserprotokoll

Betrachten Sie, was geschieht, wenn Sie auf die IBM® Website (http://www.ibm.com ) und anschließend auf die IBM Rational Cafes-Website (http://www.ibm.com/rational/cafe) zugreifen. Zwei verschiedene Webseiten von fernen Servern werden bereitgestellt und Sie können in Ihrem Browser auf die Schaltflächen Zurück und Weiter klicken, um jede der beiden Sites erneut zu besuchen. Im Gegensatz dazu erfolgt die Hauptverarbeitung in einer Rich-UI-Anwendung nur in Ihrem Browser. Die Anwendung kann neuen Inhalt wiedergeben und sogar auf den Server für visuelle Aktualisierungen zugreifen, jedoch sind die Schaltflächen Zurück und Weiter zumeist inaktiviert oder leiten direkt zu anderen Websites weiter.

In Rich-UI entscheiden Sie, welche Anzeigeninhalte als separate Webseite anzusehen sind. Sie setzen diese Entscheidung um, indem Sie auf Funktionen im Protokoll ('History') zugreifen, wobei es sich um einen Rich-UI-Handlerabschnitt handelt, der mit dem Produkt bereitgestellt wird. Indem Sie mit dem Handlerabschnitt 'History' arbeiten, können Sie Seiten während der Laufzeit dem Browserprotokoll zuordnen und der Benutzer kann die Schaltflächen Zurück und Weiter verwenden, um auf verschiedene Seiten in der Anwendung zuzugreifen. Darüber hinaus können Sie auf den Versuch des Benutzers reagieren, den Browser zu schließen.

Der Mechanismus des Browserprotokolls speichert den Status einer Webseite nicht. Sie müssen das Verhalten codieren, das für Ihre Anwendung sinnvoll ist.

Browserprotokoll und Ereignisantwort einrichten

Zur Einrichtung des Browserprotokolls und der Ereignisantwort gehen Sie wie folgt vor:
  1. Deklarieren Sie in Ihrer Rich-UI-Anwendung einen Rich-UI-Handler auf der Basis des Handlerabschnitts 'History', wie im folgenden Beispiel:
    import com.ibm.egl.rui.history.History;
    import com.ibm.egl.rui.history.HistoryChanged;
    import com.ibm.egl.rui.history.OnBeforeUnloadMessageFunction;
    
    Handler MyApplication Type RUIHandler { onConstructionFunction=start }
       myHistory History {};
    end

    Durch die Deklaration einer Variablen auf der Basis von 'History' fügen Sie ein Feld #empty der Webadresse hinzu, die im Browser des Benutzers angezeigt wird. In Hinblick auf die nachfolgende Verarbeitung ist empty der Name der neuen Seite. Die neue Seite wird einem anwendungsspezifischen Browserprotokoll hinzugefügt, jedoch nicht dem browsereigenen Protokoll, das nur die ursprüngliche Webadresse behält.

  2. In der OnConstruction-Funktion (zum Beispiel) können Sie einen Zugriff auf Funktionen (Ereignishandler) einrichten, die als Antwort auf bestimmte Benutzerereignisse ausgeführt werden:
    • Ein solches Ereignis besteht darin, dass entweder dem Browserprotokoll eine neue Seite hinzugefügt wird oder das zu einer anderen Seite navigiert wird. Später wird erläutert, wie eine neue Seite hinzugefügt oder zu einer neuen Seite gewechselt wird. Zunächst wird jedoch beschrieben, wie der Ereignishandler eingerichtet wird.
      Zur Einrichtung einer angepassten Antwort auf ein Ereignis "Neue Seite" rufen Sie die Funktion addListener auf und geben einen Ereignishandler an, den Sie codieren. Das folgende Beispiel zeigt einen Aufruf der Funktion addListener:
      myHistory.addListener(myHistoryChanged);
      Der folgende Stellvertreterabschnitt ('Delegate') gibt die Merkmale des referenzierten Ereignishandlers an:
      Delegate
         HistoryChanged(newPageName String in)
      end

      Wie gezeigt, akzeptiert der Ereignishandler für das Ereignis "Neue Seite" eine Zeichenfolge. Wenn Sie die Funktion addListener aufrufen und eine angepasste Funktion angeben, wird die angepasste Funktion in den folgenden Fällen aufgerufen: Wenn der Browser die Anfangsseite mit dem Namen empty hinzufügt und wenn Sie eine nachfolgende Seite hinzufügen. In jeden Fall zeigt der Browser des Benutzers die Webadresse an und fügt den Seitennamen ein, der der Adressteil ist, der nach dem Nummernzeichen (#) angezeigt wird. Darüber hinaus übergibt die EGL-Laufzeit diesen Seitennamen an Ihre Funktion.

      Das folgende Beispiel zeigt einen Ereignishandler, der nach einem Ereignis "Neue Seite" aufgerufen wird, wobei angenommen wird, dass myLabel ein Widget in der Benutzeranzeige ist:
      function myHistoryChanged(newPageName String in)
         myLabel.text = "History was changed. Current page name is "+ newPageName;
      end

      Sie können mehrere Ereignishandler für das Ereignis "Neue Seite" registrieren, indem Sie addListener mehrere Male ausführen. Die referenzierten Funktionen werden in der Reihenfolge der Registrierung ausgeführt. Auch wenn Sie dieselbe Funktion mehrere Male registrieren, sind alle Registrierungen wirksam.

    • Ein zweites Ereignis ist der Versuch des Benutzers, den Browser oder die Browserregisterkarte zu schließen.
      Rufen Sie in diesem Fall die Funktion keepUserOnPage auf und geben Sie einen Ereignishandler an, den Sie codieren. Das folgende Beispiel zeigt einen Aufruf der Funktion keepUserOnPage:
      history.keepUserOnPage(stayHere);
      Der folgende Stellvertreterabschnitt ('Delegate') gibt die Merkmale des referenzierten Ereignishandlers an:
      Delegate
         OnBeforeUnloadMessageFunction() returns(String)
      end

      Wie gezeigt, gibt der Ereignishandler für das Ereignis "Browser schließen" eine Zeichenfolge zurück. Diese Zeichenfolge wird in einem Dialogfenster angezeigt, das dem Benutzer die Möglichkeit gibt, das Schließen des Browsers zu bestätigen oder rückgängig zu machen.

      Das folgende Beispiel zeigt einen Ereignishandler, der nach einem Ereignis "Browser schließen" aufgerufen wird:
      function stayHere() returns(String)
      		return ("Close the application?");
      	end

Eintrag einem Browserprotokoll hinzufügen

Sie können dem anwendungsspezifischen Browserprotokoll einen Eintrag hinzufügen, indem Sie die Funktion addToHistory aufrufen. Im folgenden Beispiel wird eine Seite mit dem Namen myNewPage hinzugefügt:
myHistory.addToHistory("myNewPage");
Dies hat folgende Auswirkungen:
  • Der Ereignishandler für das Ereignis "Neue Seite" wird ausgeführt. In diesem Beispiel hat der Handler den Namen myHistoryChanged.
  • Wenn der Benutzer auf die Schaltfläche Zurück klickt, schließt die Webadresse im Browser den Namen der vorherigen Seite ein und anschließend wird zusätzlich die Schaltfläche Weiter aktiviert.

Zur vorherigen Seite navigieren

Sie können in Ihrer Anwendung zur vorherigen Seite navigieren. Das folgende Beispiel zeigt einen entsprechenden Code:

myHistory.goBack();
Dies hat folgende Auswirkungen:
  • Der Ereignishandler für das Ereignis "Neue Seite" wird ausgeführt. In diesem Beispiel hat der Handler den Namen myHistoryChanged.
  • Die Webadresse im Browser ändert sich entsprechend.
  • Die nachfolgende Navigation (Weiter und Zurück) wird geändert, um die neue Webadresse einzubeziehen.

Zur nächsten Seite navigieren

Sie können in Ihrer Anwendung zur nächsten Seite navigieren. Das folgende Beispiel zeigt einen entsprechenden Code:

myHistory.goForward();
Dies hat folgende Auswirkungen:
  • Der Ereignishandler für das Ereignis "Neue Seite" wird ausgeführt. In diesem Beispiel hat der Handler den Namen myHistoryChanged.
  • Die Webadresse im Browser ändert sich entsprechend.
  • Die nachfolgende Navigation (Weiter und Zurück) wird geändert, um die neue Webadresse einzubeziehen.

Feedback