Kategorie-Archiv: JavaScript

Firefox 4 Beta 8 und WordPress

Nach langer Zeit mal wieder ein Post hier im Blog – mangels passender Themen (obwohl reichlich passiert ist). Ein Kunde von mir machte mich vor Kurzem darauf aufmerksam, dass scheinbar AJAX-Requests im WordPress Admin-Bereich nicht mehr funktionieren. Auf der Suche nach dem Fehler – bzw. beim Versuch den Fehler nachzuvollziehen fiel mir auf, dass das Problem scheinbar nur den Firefox (4, Beta 8) betrifft. Ein Test mit Chrome lief problemlos durch.

Jetzt stellt sich natürlich die Frage, was dieses Problem auslöst, ein Bug in der JS-Engine von Firefox 4 oder ein solcher in WordPress, der schlicht noch nicht aufgefallen ist. Hatte schon jemand einen ähnlichen Effekt?

Die RSH-Bibliothek und Safari / the rsh-library and Apples Safari

You will find the english version below.

In einem Projekt, an dem ich für meine Firma im Moment arbeite, hatten wir das Problem, dass wir in einer AJAX-Anwednung den Zurück-Button benutzbar halten mussten. Die Varianten diese Funktionalität bereit zu stellen waren entweder eine eigene Lösung zu finden oder eine schon fertige (möglichst in allen gängigen Browsern lauffähige) Bibliothek zu verwenden. Die Wahl fiel, auf Grund unterschiedlicher Widrigkeiten – allen voran die mangelnde Erfahrung mit Projekten dieser Art, sehr schnell auf eine fertige Lösung. Ich wusste bereits von einer Variante, die das xajax-Framework verwendet, jedoch haben wir diese nicht verwendet – eine weitere Vorraussetzung war, dass die Bibliothek sich problemlos im Zusammenspiel mit dem „Prototype JavaScript Framework“ integrieren lassen musste. Die Wahl fiel dann letztlich auf die „Real Simple History“ RSH Bibliothek.

Aus dieser Wahl ergab sich jedoch, nach einigem Testen, ein Problem: sie ist in ihrer aktuell verfügbaren Version (0.6) nur bis Safari 3.0.x lauffähig. Da sich der Safari ab Version 3.1.x ähnlich verhält wie der Firefox, musste die „Browserweiche“ in RSH ein wenig umgearbeitet werden. Letztlich habe ich also an der Stelle, an der die jeweiligen Browser heraus gefiltert werden, für den Safari ab Version 3.1 noch eine weitere Aufteilung geschaffen. Mit dieser Änderung war die Bibliothek dann voll für unsere Zwecke einsetzbar. Die Änderungen findet ihr direkt im Anschluss an die englische Version dieses Beitrages. Da ich nur die rsh.js angepasst habe, werde ich auch nur diese hier zum Download anbieten. Zur vollständigen Version gehts hier: http://code.google.com/p/reallysimplehistory/

English version:

Last week, as I was working for an actual project. We had to provide the back-button functionality also in an AJAX-based website. The 2 choices we had, were to develop everything ourselves or use an allready tested open source-library. We decided for the second one an at least found the „Really Simple History“ (RSH) library.

The problem was, that this library only worked fine with Safari until version 3.0.x. So I had to change the browser-detection a little bit, after all, Safari works like Firefox since Version 3.1.0 and only this point had to be changed. Now the adapted version runs for Safari in all versions since 2.0.3. Because I only altered the rsh.js, I will only provide this file here. In the code snippet afterwards you will find my changes, too. For full version have a look at: http://code.google.com/p/reallysimplehistory/

/* original */
/*set user-agent flags*/
var UA = navigator.userAgent.toLowerCase();
var platform = navigator.platform.toLowerCase();
var vendor = navigator.vendor || "";
if (vendor === "KDE") {
	this.isKonqueror = true;
	this.isSupported = false;
} else if (typeof window.opera !== "undefined") {
	this.isOpera = true;
	this.isSupported = true;
} else if (typeof document.all !== "undefined") {
	this.isIE = true;
	this.isSupported = true;
} else if (vendor.indexOf("Apple Computer, Inc.") > -1) {
	this.isSafari = true;
	this.isSupported = (platform.indexOf("mac") > -1);
} else if (UA.indexOf("gecko") != -1) {
	this.isGecko = true;
	this.isSupported = true;
}
/* new version */
/*set user-agent flags*/
var UA = navigator.userAgent.toLowerCase();
var platform = navigator.platform.toLowerCase();
var vendor = navigator.vendor || "";
if (vendor === "KDE") {
	this.isKonqueror = true;
	this.isSupported = false;
} else if (typeof window.opera !== "undefined") {
	this.isOpera = true;
	this.isSupported = true;
} else if (typeof document.all !== "undefined") {
	this.isIE = true;
	this.isSupported = true;
} else if (vendor.indexOf("Apple Computer, Inc.") > -1) {
	var safariVersion = navigator.appVersion.substr(navigator.appVersion.indexOf("Safari")-6, 3);
	if (safariVersion < 3.1) {
		this.isSafari = true;
		this.isSupported = (platform.indexOf("mac") > -1);
	}
	else
	{
		this.isGecko = true;
		this.isSupported = true;
	}
} else if (UA.indexOf("gecko") != -1) {
	this.isGecko = true;
	this.isSupported = true;
}

Die angepasste Version von rsh.js / The adapted version of rsh.js

Was lange wärt …

… wird endlich gut. Das gilt auch für meine Bachelorarbeit die ich im Rahmen dieses Artikels nun endlich veröffentlichen möchte. Was, trotz schon lange erfolgter Freigabe, immer wieder hinaus geschoben wurde. Benotet wurde sie (insgesamt) mit einer 2,3.

Kurz zum Thema der Arbeit: es ging um die Usability von sogenannten Web2.0-Seiten. Im Rahmen der Arbeit habe ich geprüft, in wie weit die wichtigsten Richtlinien – hierzu zählen unter anderem 2 ISO-Normen und ein Bundesgesetz – mit dem JBoss Richfaces Framework umsetzbar sind. Interessant dürfte der Inhalt der Arbeit aber auch allgemein, wenn es um das Design und die Entwicklung von Internet- und Intranetanwendungen geht. Das genaue Thema lautete: „Umsetzbarkeit der Standards zur Dialoggestaltung und Barrierefreiheit mit
JBoss Richfaces“

Hier nun kurz zusammen gefasst der Inhalt der Arbeit:

1. Teil: Zusammenfassung und Erklärung der wichtigsten Begriffe in der Software-Ergonomie

2. Teil: Erklärung der Anforderungen aus den Normen und Gesetzen zur Software-Ergonomie und Barrierefreiheit, sowie die Umsetzbarkeitsstudie

3. Teil: Zusammenfassung der Ergebnisse aus Teil 3

4. Teil: Fazit und Ausblick

Für die Unterstützung auf meinem Weg bis hin zum abgeschlossenem Studium, möchte ich meinem (nunmehr) ehemaligen Arbeitgeber, der Deutschen Telekom AG (Telekom Training GmbH) und hier speziell meiner Betreuerin auf Seiten der TT sowie meinen Kollegen bei meinem Einsatzbetrieb (T-Systems) in Weinheim danken. Auch wenn es während dieser Zeit nicht immer schön war, möchte ich sie doch zum allergrößten Teil nicht missen. Weiterhin gilt mein Dank meinen Eltern und meiner Freundin, die mich während der ganzen Zeit nicht nur moralisch unterstützt haben.

Hier nun also der versprochene Download-Link! (klick hier)

Die Arbeit steht unter der Creative-Commons-Lizenz, es dürfen Veränderungen an ihr vorgenommen und sie darf weiterverbreitet werden. Einschränkungen:

1. Mein Name (als Urheber) darf nicht aus dem Text entfernt werden
2. Änderungen müssen veröffentlicht und ebenfalls unter der CC-Lizenz veröffentlicht werden, des weiteren würde ich mich freuen über Änderungen in Kenntnis gesetzt zu werden
3. Die kommerzielle Nutzung des Inhaltes dieser Arbeit ist nur unter den in 1. und 2. genannten Bedingungen gestattet

Weitere Entwicklung von JavaScript (aka ECMAScript)

Wie golem am 02.11. berichtete, streiten sich derzeit Vertreter von Microsoft und Mozilla um die Zukunft der Script-Sprache JavaScript (oder: ECMAScript 4th Edition). Während Mozilla in der neuen Version zahlreiche Verbesserungen unterbringen möchte, sieht Microsoft (vielleicht auch aus Angst vor Konkurrenz zu C# in Silverlight) Probleme bei der Abwärtskompatibilität. Laut Mozillas Cheftechniker Brendan Eich wird ECMAScript 4 jedoch eine Obermenge von ECMAScript 3 bilden, was automatisch dazu führen würde, dass es abwärtskompatibel ist.

Mit ECMAScript 4 soll JavaScript zu einer ernsthaften Programmiersprache entwickeln, die Verteilte Softwareentwicklung besser unterstützt.

Die Angesprochenen Neuerungen in ECMAScript 4, findet ihr hier: Sprachübersicht (Zusammenfassung) ECMAScript 4th Edition (englisch)