Schlagwort-Archive: Ajax

javascript frameworks

Unlängst habe ich mir einige RIA-Frameworks angesehen und war von Prototype & jQuery begeistert. Dabei habe ich Dojo anscheinend übersehen, was aber nicht weiter verwunderlich ist, da ich hier z.B. sage und schreibe 128 ajax / javascript frameworks finde. Kaum zu glauben, dass vor einigen Jahren (10 bis 15) JS in jeden Browser noch standardmäßig deaktiviert war und ich mir meine JS-Menüs und den ganzen JS-Schnickschnack in die Haare …. Man hat mich höchstens gefragt, was ich denn mit den clientseitigen Spielereien bezwecken will, es nutzt sie ja doch keiner. Aus dieser Zeit stammt vermutlich auch die Motivation zu dem Absatz Missbrauch auf Wikipedia JavaScript:

Einige Anwendungen, die mit JavaScript möglich sind, verärgern meistens den Benutzer und werden als „schlechter Stil“ angesehen:

* Quelltext „verschleiern“, um diesen vor dem Besucher zu verstecken
* Verschleiern von Internetadressen, auf die ein Link verweist
* Deaktivieren des Kontextmenüs, um zu erschweren, dass Bilder oder die gesamte Seite abgespeichert werden können
* Deaktivieren der Kopierfunktion, um zu erschweren, dass Texte oder Bilder kopiert werden können
* Unaufgeforderte (Werbe-)Pop-ups oder Pop-unders
* Ungewolltes Öffnen von Fenstern, teilweise auch Öffnen beliebig vieler Fenster
* Ungewolltes Schließen des Browserfensters
* Ungewollte Größenänderung des Browserfensters
* Blockieren der Anwender mit zahllosen aufeinanderfolgenden Dialogfenstern
* Bei anfälligen Webanwendungen kann JavaScript auch von Dritten missbraucht werden, etwa per XSS (Codeeinschleusung).
* JavaScript-Navigation: Barrierearme Webseiten zeichnen sich dadurch aus, dass sie auch bei abgeschaltetem JavaScript möglichst uneingeschränkt navigierbar bleiben. Oft schränkt das nicht aktivierte JavaScript die Benutzbarkeit einer Webseite ein.

Wie dem auch sei, Ajax ist jedenfalls ein schöner, neuer Name für HttpRequests und v. a. der Einsatz bei Google bewikte die allgemeine Akzeptanz, glaube ich. Und schon ist es ein nicht mehr weg zu denkender Hit für Web Design und Web-Anwendugen. Ajax ist ja auch wirklich sinnvoll, aber ohne Google würde Ajax und JS vielleicht noch immer lediglich eine standardmäßig in jedem Browser deaktivierte Gefahrenquelle darstellen.

Also, Dojo, dojo-pkg und GWT wollte ich jedenfalls noch hervorheben und Qooxdoo spielt überhaupt in einer ganz anderen Liga.
Qooxdoo im public-Vrzeichnis von Ruby on Rails ist angeblich mehr als nur syntaktischer „Zucker“ für RIA-Server-Client-Anwendungen im Intra- und Internet, siehe dazu auch Ruby on Rails integration. Ich bin übrigens gerade bei den ersten Tests und werde mir dazu hier bestimmt noch einiges notieren.

Weblinks:
JsonRpc
Orbjson

Applications Gallery – Google App Engine – Google Code

Hier merke ich mir nur ein paar sehr interessante Seiten:

Google Code auf Deutsch.

Applications Gallery – Google App Engine – Google Code.

Google App Engine lets you run your web applications on Google’s infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. With App Engine, there are no servers to maintain: You just upload your application, and it’s ready to serve your users.

app-engine-patch

With app-engine-patch a major part of Django works on App Engine without any modifications. The most important change is that you have to use Google’s Model class because the development model is too different from Django (at least with Django’s current API).

Gears

Gears ist ein Open Source-Projekt, das durch das Hinzufügen neuer Funktionen zu Ihrem Browser mehr leistungsfähige Webanwendungen bietet:
Desktop: Webanwendungen arbeiten reibungslos mit Ihrem Desktop zusammen.
Datenbank: Speichern Sie Daten lokal in vollständig durchsuchbaren Datenbanken.
WorkerPool: Führen Sie Java im Hintergrund aus, um die Leistung zu verbessern

Google Code Labs

Google Code Labs is home to developer products that are still in their formative stages. Graduating from Labs is a big step, one that indicates long-term commitment on our part.

Google and Open Source
google-app-engine-django-guestbook

An adaptation of the Guestbook sample SDK that uses the Django web framework, and doubles as an easy starting point for your own Django applications on the Google App Engine.

AJAX Programming
Getting Started: Python

This tutorial describes how to develop and deploy a simple Python project with Google App Engine. The example project, a guest book, demonstrates how to use the Python runtime environment, and how to use several App Engine services, including the datastore and the Google user service.

Animierte Ladegrafik und Ajax

Auf loader generator kann man sich schnell und einfach nette animierte GIFs erstellen lassen. Das erspart einem die Suche, oder das Basteln mit Gimp und sie sind als Ladegrafiken meines Erachtens völlig ausreichend. Ein weiterer Generator findet sich (habe ihn nicht getestet) auf ajaxload.info. So kleine GIFs eignen sich auch gut für scripts diverser frameworks (Listung von über 200 Ajax frameworks).

So kann man es zum Beispiel aber auch einbauen:

Klicken Sie auf XMLHttpRequest aufrufen und warten Sie auf die Antwort.

zuerst ist da nix, bis der request aufgerufen wird

Bis eine Antwort auf den request kommt, kann man also gut ein animiertes GIF anzeigen, um die Wartezeit zu überbrücken. Ich habe den request im Beispiel einfach durch einen Zähler ersetzt.

warten!

warte!

Wenn dann eine positive Antwort kommt, wird der return Wert angezeigt, sonst eine Fehlermeldung.
Ich wende das zum Beispiel an, auf rate this oder rate that. 😉

Weblinks:
XMLHttpRequest
AJAX – Frische Ansätze für das Web-Design
AJAX
The XMLHttpRequest Object
Einen HttpRequest mittels Javascript erzeugen
Ladeanimationen
scriptaculous
Ajax Ladegrafik – Wie wird sowas eingebaut?
Dort liest man: „blende doch einfach das Bild ein, nachdem Du den request ausgeführt hast und onreadystatechange (also hiern zB in cb_show_pause) blendest Du es bei 4 wieder aus.
»» function get_pause(action,seconds) {
»» // XMLHttpRequest absetzen
»» if(XMLHTTP.readyState==4 || XMLHTTP.readyState==0) {
»» XMLHTTP.open("GET","get_xml_feed.php?action="+action+"&seconds="+seconds);
»» XMLHTTP.onreadystatechange = cb_show_pause;
»» XMLHTTP.send(null);
»» zeigeBild();
»» }
»» }


»» function zeigeBild() {
»» document.getElementById("DeinLadeBild").style.display = "block";
»» }