Archive for the ‘Web Development’ Category

How to change the iPhone On-Screen-Keyboard in Web Apps

Montag, Februar 22nd, 2010

Nearly three years ago, when Apple introduced the iphone, so-called “Web Apps” were the only way to develop and publish self-made applications on Apple’s new and shiny gadget. With the announcement of the SDK and the launch of the App Store, developers started abandoning web applications and began flocking to native development. But this is not the end of web-based applications: Recently Google declared the end of mobile app stores and with Google Voice, Buzz and GMail, the company started to port their entire range of services to the mobile web. Besides that, HTML5 provides the much-needed technologies (offline access, storage, location awareness) to really make web-based applications great and useful.

On of the biggest problems developers are facing with mobile web applications is the user interface/experience. We have to reach the superior quality GUI of native applications together with all the conveniences they are offering to users. The majority of web sites for example are using the plain old on-screen-keyboard for every text input, no matter what characters will be entered. It isn’t really comfortable to enter an email-address when you have to change to the secondary keyboard to enter a “@”. Just the same as having to change it for entering numbers in an input element that is only ment to contain numbers anyway.

This is probably the most common user interface problem and it is also one of the easiest to fix. The HTML5 specification contains an extension to the type attribute of input elements that is perfectly recognized by Mobile Safari. With just a little change, you are able to make your web-based application more convenient to use. And by the way: Browsers that don’t understand the new type attributes will ignore it and keep displaying a normal input element.

It is as simple as the following code snippet:

Text: <input type="text" /> <!-- display a standard keyboard -->
Telephone: <input type="tel" /> <!-- display a telephone keypad -->
URL: <input type="url" /> <!-- display a URL keyboard -->
Email: <input type="email" /> <!-- display an email keyboard -->
Zip Code: <input type="text" pattern="[0-9]*" /> <!-- display a numeric keyboard -->

Just change to type attribute to either “tel”, “url” or “email”. Additionally you can alter use the new pattern attribute to only allow numbers. I’ve set up a demo page which can be accessed with every iPhone and iPod Touch. Please note, that this feature is only supported in iPhone OS 3.1 or newer.

Tracking User Behaviour with Google Analytics, Event Tracking and Mootools

Dienstag, Februar 9th, 2010

While searching the web for a proper way to track user behaviour, I stumbled upon a very interesting blog post written by Brian Cray. He uses the “power” of Google Analytics’ new Asynchronous Tracking to track all clicked links and get information about how the users behave on his site. This method gives you insights about what elements of the site are really used and how the visitors are navigating through the content. Brian sums it up quite properly:

I dare you to answer the following questions with your current Google Analytics setup:

  • Are your users using the main menu to navigate or do they use different means to find content?
  • Do your users scroll through your content and click links in the footer?
  • Do your users click on an article title or the “continue reading…” link?
  • Do your users actually go through the items in my dropdown menu, or are they
  • unaware of the dropdown menus?
  • Do your users follow your related blog entry suggestions?

As I’ve chosen Mootools as the Javascript-Framework for many of my websites, I couldn’t really copy and paste the code to the <head>-sections. I’ve not only rewritten the code-snippet to utilize Mootools instead of jQuery but also tweaked the functionality which results in better tracking.

Just copy and paste this right under the code of google analytics:

window.addEvent('domready', function() {
	$$('a').addEvent('click', function(event){
	  	var element = $(event.target || event.srcElement);
 
		if(element.get('tag') != 'a'){
			element = element.getParent('a[href]');
		}
 
	  	try{
	  		_gaq.push(['_trackEvent', (element.get('id') || element.getParent('[id]').get('id')), 'clicked', (element.get('text').trim() || ((element.getFirst('img'))?element.getFirst('img').get('alt'):element.get('href'))) || element.get('href')]);
	  	}catch(err){
	  	}	  	
 
	});
});

For more information about how this works and asynchronous tracking in general, please visit Brian’s blog.

Star Wars Anfangssequenz in HTML + CSS

Donnerstag, Januar 21st, 2010

In den letzten Monaten hat sich einiges getan im Bezug auf Web-Standards und Technologien. Beispielsweise wurde ein neuer Browser-Wettlauf rund um die HTML5-Spezifikationen entfacht und die Hersteller versuchen jeden noch so kleinen Geschwindigkeitsvorteil aus ihren Software herauszuholen. Was heutzutage mit “stinknormalen” Browsern möglich ist, zeigt Guillermo Esteves auf seinem Blog:

Er hat die berühmte Anfangssequenz von Star Wars – den gelben Lauftext mit dem Weltall im Hintergrund – komplett in HTML und CSS nachgebaut. Leider funktioniert die Animation scheinbar derzeit nur mit Snow Leopard und dem Safari 4.0.4 sowie dem WebKit nightly-Build. Für alle Windows-User gibt’s jedoch netterweise ein Video auf YouTube.

Google Browser Size

Sonntag, Dezember 20th, 2009

Es ist noch gar nicht so lange her, da musste man beim Web-Design noch auf die kleineren Auflösungen der CRT-Monitore Rücksicht nehmen. 800*600 Pixel war vor ein paar Jahren noch die Bildschirmauflösung von einem nicht zu vernachlässigenden Teil der Website-Besucher, der dementsprechend berücksichtigt werden musste. Ähnliche Probleme entstehen auch jetzt wieder, wenn man mit Netbooks und anderen mobilen Geräten mit geringer Bildschirmgröße auf das Internet zugreift.

Google hat jetzt ein brauchbares Tool herausgebracht, dass einem Vieles erleichtern soll. Mit Browser Size spürt man gezielt Usability-Probleme im Zusammenhang mit zu kleinen Auflösungen auf und kann seine Internetseiten entsprechend verändern. Über die eigentliche Website wird ein halbtransparentes Overlay gelegt, anhand dessen man anschließend leicht den prozentuell sichtbaren Bereich erkennen kann.

Bei wem also wiedermal ein Website-Redesign ansteht, der sollte sich das kleine Helferlein im Hinterkopf behalten …

Browser Ball verbindet mehrere Browserfenster

Freitag, Mai 15th, 2009

Google hat bereits vor einiger Zeit mit Chrome Experiments eine Plattform für allerlei Javascript-Spielereien und Experimente ins Leben gerufen auf der es sich immer wieder einmal vorbeizuschauen lohnt. Da Googles Browser – genauso wie Apples Safari – die Webkit-Engine zu Grunde liegt, lassen sich die meisten Projekte auch mit anderen Browsern aufrufen. Auch mit dem Firefox kann man bei dem ein oder anderen Experiment ein Glück haben, immerhin werden nur offene Standards verwendet.

Besonders lustig finde ich Browser Ball, das beliebig viele Browserfenster zu einem großen Spielfeld zusammenfügt und man einen Ball über verschiedene Windows werfen kann. Schaut’s euch mal an – es ist beeindruckend!

bild-2

Espresso: Der Koffein-Boost für Webentwickler

Montag, März 23rd, 2009

bannericonIm offiziellen Entwicklerblog von Macrabbit, die sich auch für den ausgezeichneten CSS-Editor CSSEdit verantwortlich zeigen, wurde heute der Startschuss von Espresso 1.0 verkündet. Ganz im Stile von CSSEdit folgt auch der große Bruder den bekannten Grundregel der belgischen Entwickler:

“power editing, blazingly fast publishing, previewing and much more — all wrapped in a slick interface”

espresso

Eine wirklich hervorragende Idee ist die Möglichkeit, die Webentwicklungs-Suite durch verschiedene Plug-Ins, so genannte Sugars, erweitern zu können. Diese XML-Dateien können die zusätzliche Script- und Programmiersprachen in Espress einbinden und machen das Programm noch flexibler. Im Coffee House oder dem offiziellen Forum gibt es bereits einige Sugars zum kostenlosen Download, die Zahl wird sich hoffentlich bald um ein vielfaches steigern. Falls die gewünschte Erweiterung noch nicht verfügbar ist, kann diese einfach mit dem Sugar Development Kit selbst erstellt werden.

Im Grunde stellt Espresso eigentlich nur die Grundfunktionen zur Verfügung. Diese Aufgabe haben die Entwickler wunderbar erfüllt und bieten eine ansprechende und intuitive Oberfläche. Weitere Funktionen können mit dem ausgereiften Plug-In System nach Belieben hinzugefügt werden. Ich werde das Programm jedenfalls erst einmal 15 Tage testen und dann kann ich mir hoffentlich ein Bild darüber machen, ob es gegen Coda, dem direkten Konkurrenten, eine Chance hat.

Tragen wir den IE6 zu Grabe!

Freitag, Februar 20th, 2009

internet_explorerEin weiteres mal hat mich ein Twitter-User auf eine ganz nette Initiative aufmerksam gemacht: Peter Höflehner berichtet in seinem Tweet über die norwegische Website Finn.no, die Benutzern des veralteten Internet Explorer 6 den Kampf angesagt hat. Besucht man den Online-Anzeigenmarkt mit dem fast schon sieben Jahre alten Browser, bekommt man eine grüne Box zu sehen, die auf den verwendeten Browser hinweist und Alternativen vorschlägt.

Es gibt bereits eine Gruppe von Web-Entwicklern, die ähnliche Warnmeldungen auf ihren Webseiten platziert, um die Verbreitung des Internet Explorers zu dezimieren. Zur Besseren Kommunikation und Koordination der Aktion wurde ein Wiki eingerichtet.

Ich kann diese Aktion nur unterstützen und werde in den kommenden Tagen auch so eine Box hier einbauen. Ich denke, dass die Zeit gekommen ist, den Internet Explorer 6 schön langsam zu Grabe zu tragen und damit auch die zahlreichen Sicherheitslücken und Inkompatibilitäten ein für allemal aus dem Weg zu schaffen. Leider gibt es, vor allem im Business-Sektor, viele Anwender, die nicht von heute auf morgen den Browser wechseln können. Deswegen ist es wichtig, die Erreichbarkeit für diese Leute trotzdem noch zu gewährleisten aber trotzdem einen Hinweis für die Anwender anzuzeigen.

Wollt ihr diese Aktion unterstützen? Dazu genügt es, folgenden HTML-Code an passender Stelle in eure Seite einzubauen. Der benutzte Browser wird automatisch erkannt und Benutzer von modernen Browsern bekommen die Meldung nie zu sehen:

<!--[if lte IE 6]>
<mce :style type="text/css">< !
#ie6msg{border:3px solid #090; margin:8px 0; background:#cfc; color:#000;}
#ie6msg h4{margin:8px; padding:0;}
#ie6msg p{margin:8px; padding:0;}
#ie6msg p a.getie7{font-weight:bold; color:#006;}
#ie6msg p a.ie6expl{font-weight:normal; color:#006;}
-->
<div id="ie6msg">
<h4>Wussten Sie dass Ihr Browser (Internet Explorer) veraltet ist?</h4>
Um das beste Ergebnis und den vollen Nutzungsumfang unseres Internetauftrittes nutzen zu können, aktualisieren Sie bitte ihren Browser.
Die aktuelle Version ist der <a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer 7</a> und der <a href="http://www.microsoft.com/windows/Internet-explorer/beta/default.aspx">Internet Explorer 8</a> ist bereits als beta verfügbar.
Die Aktualisierung ist kostenlos. Sollten sie einen Computer am Arbeitsplatz benutzen, wenden Sie sich bitte an den Administrator/Informatiker.
 
Sie können auch andere Internet Browser probieren, wie die kostenlosen <a href="http://www.opera.com">Opera</a>, <a href="http://mozilla.com">FireFox</a> oder <a href="http://www.apple.com/safari/download/">Safari</a></div>
&lt; ![endif]--&gt;</mce>

Noch bequemer geht es natürlich mit diesem Wordpress-Plugin!

Erklärung des “Don’t Click”-Clickjackings auf Twitter

Donnerstag, Februar 12th, 2009

486887_mouseIn den vergangenen Minuten waren die Timelines auf Twitter prall gefüllt mit “Don’t Click” Statusupdates, die alle auf diese Seite verweisen. Auch mich hat es natürlich erwischt und ich hab mal nachgeforscht, wie die Technik des kleinen Hacks funktioniert. Nach kurzer Analyse gibts auch schon die Erklärung: Hinter dem Scherz steht keine Sicherheitslücke oder andere bedrohliche Dinge, sondern ein geschickter Einsatz von HTML und CSS.

Betrachtet man den Quelltext der Seite genauer, so findet man gleich am Anfang einen Iframe mit der URL “http://twitter.com/home?status=Don’t Click: http://tinyurl.com/amgzs6″. Dieser ruft eine ganz normale Twitter-Startseite auf, bei der das gewünschte Statusupdate bereits in das Eingabefeld eingegeben ist. Diese Technik benützten viele Twitter-Mashups und Dienste um keine API-Zugriffe zu benötigen. Doch wie funktioniert das Absenden des Tweets?

Ganz einfach sogar! Der Iframe wurde vollständig transparent gemacht und genau soweit über den Browserrand nach links geschoben, dass sich der “update”-Button der Twitterseite über dem “Don’t click”-Button der eigentlichen Seite befindet. Man klickt also nicht wirklich auf den sichtbaren Button sondern bestätigt unwissentlich den unsichtbaren Button der Twitterseite. Über diese Weise wird das Statusupdate dann auf Twitter gepostet.

Ich hab den Code nochmal ein wenig verändert, um das Ganze deutlicher zu machen:

 

Iframe mit reduzierter Transparenz:

bild-51

 

Iframe komplett im Bild mit reduzierter Transparenz:

bild-4

 

UPDATE: Twitter hat mitlerweile das Clickjacking-Lücke gefixt. Probleme dieser Art sollten in Zukunft nicht mehr auftreten. Falls ihr noch Interesse an dem Sourcecode habt, diesen findet ihr auf Pastie.

Wordpress 2.7.1 veröffentlicht

Mittwoch, Februar 11th, 2009

bild-1Alle Blogger unter uns dürfte das neue Maintenance-Release der bekannten Blogging-Plattform Wordpress interessieren. Die Versionsnummer wurde nur auf 2.7.1 aktualisiert, dementsprechend kann man keine großen Änderungen in der Featureliste erwarten. Beim Code hat sich jedoch einiges getan: 68 Support-Tickets wurden durch die Veröffentlichung gelöst und es sind zahlreiche Änderungen in die Aktualisierung eingeflossen.

Die neue Version bekommt ihr über die Download-Seite oder das automatische Update-Funktion direkt im Admin-Panel. Auch eine deutsche Version ist bereits erhältlich. Template- oder Plugin-Inkompatibilitäten sind durch das Update nicht zu erwarten.

Googles Content Distribution Network für Javascript-Libraries

Samstag, Januar 31st, 2009

1076569_city_street_lightsKaum eine moderne Seite kommt in der heutigen Zeit ohne eine vernünftige Javascript bzw. AJAX Library aus. Diese helfen bei der schnellen Entwicklung von Webanwendungen und zaubern all die tollen Effekte auf unsere Bildschirme, die man in der Web 2.0 Generation lieben gelernt hat. Der einzige Nachteil dabei ist, dass die Dateigröße der Libraries über die Zeit ziemlich angestiegen ist. Script-Dateien von 100kb und mehr sind keine Seltenheit und beschäftigen sowohl Seitenbetreiber als auch Besucher mit hohem Traffic.

Durch den Blog von David Walsh bin ich auf die AJAX Libraries API von Google aufmerksam geworden, die sich um dieses Problem annimmt. Sowohl die alten, als auch neuen Javascript-Libraries werden dabei von Google gehostet und kostenlos zur Verfügung gestellt. Google betreibt eines der größten Content Distribution Network (kurz CDN) der Welt und hat dementsprechend ausreichende Kapazitäten um diese Last abzunehmen. Als Webentwickler braucht man diese nur noch einbauen. Dies halt ein paar sehr große Vorteile:

  1. Google betreibt umfangreiche Data-Center, die auf der ganzen Welt verstreut sind. Die Dateien werden dadurch immer über die kürzeste Verbindung geladen: Europäer bekommen die Files von Europa geliefert – Amerikanische Benutzer von Amerika.
  2. Die Google-Server sind höchstwahrscheinlich schneller  und haben eine kürzere Antwortzeit als die Eigenen, weil Google diese speziell für statische Daten optimiert.
  3. Je mehr Seiten die oben genannte Methode nutzen, umso größer ist die Wahrscheinlichkeit, dass sich die Dateien bereits im Browsercache befinden und somit kein ein Dateitransfer zu Stande kommt.
  4. Der Datenverbrauch wird auf beiden Seiten (Betreiber und Besucher) drastisch verkleinert!

 

Eine genaue Auflistung der verfügbaren Libraries (jQuery, MooTools, Prototype, YUI, etc.) und eine Anleitung findet ihr bei Google.