Schlagwort-Archiv: AJAX

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

PHP-Entwicklung – Neuerungen in PHP, Zend-Framework, PHP-Sicherheit

(Fortsetzung von: PHP-Entwicklung – Umstieg von 4 auf 5 sowie 5 auf 6)

Auf Golem wurde bereits am Freitag der zweite Teil des Interviews mit veröffentlicht, darin kamen unter anderem die Neuerungen in PHP6 noch einmal mehr zur Sprache.Ich werde daher heute eine „Liste“ der Neuerungen mit einer kurzen Erklärung dazu hier veröffentlichen (angelehnt an den genannten (und verlinkten) Artikel auf golem.de). Im Weiteren werde ich noch auf die Themen Sicherheit in PHP und das Zend-Framework eingehen. PHP-Entwicklung – Neuerungen in PHP, Zend-Framework, PHP-Sicherheit weiterlesen

Thema Bachelorarbeit

Ich muss am Freitag nen Exposé zu meinem Wunschthema für die Bachelorarbeit abgeben, habe aber bisher noch nicht wirklich ne Ahnung wie ich die Fragestellung wählen soll/kann. Bereich soll das nette „Web 2.0“ sein – in Verbindung mit Software-Ergonomie. Mir schwebt da sowas vor wie eine Umsetzbarkeitsanalyse in der industriellen Software-Entwicklung für Webanwendungen. Sprich Verwendung von Frameworks usw. – in meinem Fall wird das ganze in der Welt von J2EE sein. Die Frameworks die ich im Moment für ein Projekt verwende sind Seam, AJAX4JSF und Richfaces. Mal gucken was man machen kann …