Archiv:

Latest photoblog

photoblog

Blog » HTML5

Linkdump #5

5

A short test on performance when using IDs in CSS selectors:
http://oli.jp/2011/ids/

Nice trick: Fixing the JavaScript typeof operator
http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/

Understanding prototypes in JavaScript
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/

How LinkedIn used Node.js and HTML5 to build a better, faster app
http://venturebeat.com/2011/08/16/linkedin-node/

Advantages of Most Perpetual Web Development Technologies – PHP, ASP.NET, Java, Ruby on Rails
http://phpwebdevelopmentservices.blogspot.com/2011/05/advantages-of-most-perpetual-web.html

10 Excellent HTML5 coding Tools Many Users Don’t Know About
http://smashinghub.com/excellent-html5-coding-tools.htm

Linkdump #4

4

18 mistakes that kill startups
http://www.paulgraham.com/startupmistakes.html

7 lovely things about HTML5
http://www.elated.com/articles/7-lovely-things-about-html5-markup/

Lists are cool. So here is another one: 15 HTML5 Canvas Applications Developers Should Know About
http://smashinghub.com/15-html5-canvas-applications-developers-should-know-about.htm

CSS3 @font-face design guide
http://webdesignerwall.com/tutorials/css3-font-face-design-guide

Published more than a year ago but still worth reading: Signs of a poorly written jQuery plugin:
http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/

Geolocation jQuery-Plugin

I created a small jQuery plugin which acts as a simplification of the Geolocation API.

Instead of using navigator.geolocation.getCurrentPosition you can now just use the jQuery methods $.geolocation.get() or $.geolocation.watch().

Contrary to the standard API the only parameter the functions expect is a JSON object with three properties in no particular order: success, error, options. For success and error you can also use their alias properties „win“ and „fail“:
$.geolocation.get({win: function() {}, fail: function() {}, options);

You can also use $.geolocation.getCurrentPosition(success, error, options) to get native API feeling if this makes you happier. In conjunction with my Geolocation API polyfill script this also works with some non-standard Geolocation APIs like Google Gears or Blackberry Location.

Usage

$.geolocation.clearWatch(watchID)
Stops tracking of the user for the according watchID.
watchID (Integer)
$.geolocation.get(options)
Get the current position of the user
options (Object)

  • error
    Function to call if geolocation request failed
  • fail
    Alias for error
  • options
    Options for the geolocation request

    • enableHighAccuracy
    • maximumAge
    • timeout
  • success
    Function to call if geolocation request was successful
  • win
    Alias for success
$.geolocation.getCurrentPosition(success, error, options)
Get the current position of the user (API standard behavior)
success Function to call if geolocation request was successful
error Function to call if geolocation request failed
options Options for the geolocation request

  • enableHighAccuracy
  • maximumAge
  • timeout
$.geolocation.stop(watchID)
Stops tracking of the user for the according watchID.
watchID (Integer)
$.geolocation.stopAll()
Stops all watchPosition callbacks.
$.geolocation.watch(options)
Track the movement of the user
Returns: watchID (Integer)
options (Object)

  • error
    Function to call if geolocation request failed
  • fail
    Alias for error
  • options
    Options for the geolocation request

    • enableHighAccuracy
    • maximumAge
    • timeout
  • success
    Function to call if geolocation request was successful
  • win
    Alias for success
$.geolocation.watchPosition(success, error, options)
Track the movement of the user (API standard behavior)
Returns: watchID (Integer)
success Function to call if geolocation request was successful
error Function to call if geolocation request failed
options Options for the geolocation request

  • enableHighAccuracy
  • maximumAge
  • timeout

Examples

function alertMyPosition(position) {
	alert("Your position is " + position.coords.latitude + ", " + position.coords.longitude);
}
 
function noLocation(error) {
	alert("No location info available. Error code: " + error.code);
}
 
$('#getPositionButton').bind('click', function() {
	$.geolocation.get({win: alertMyPosition, fail: noLocation});
});
 
$('#watchPositionButton').bind('click', function() {
	// alertMyPosition is called each time the user's position changes
	myPosition = $.geolocation.watch({win: alertMyPosition}); 
});
 
$('#stopButton').bind('click', function() {
	$.geolocation.stop(myPosition);
});

Demo

http://manuel-bieh.de/publikationen/scripts/jquery/geolocation/

Download

https://github.com/manuelbieh/jQuery-Geolocation

Online-Adventskalender für Web-Developer

Da ich es immer wieder schön finde in der Adventszeit täglich einen neuen Artikel in den zahlreichen „Web-Adventskalendern“ zu lesen, hier mal eine kleine Auflistung an schicken Kalendern die ich so gefunden habe in der Zwischenzeit:

  • Webkrauts – deutsche Artikel zum Thema Internet. Schwerpunkt dieses Jahr: Kunden
  • Maddesigns.de + Webstandardsblog – zwei Seiten, eine Kooperation: ein deutscher Kalender mit vielen Praxisbeispielen was heute schon mit CSS3 möglich ist oder bald sein wird
  • 24 ways to impress your friends – englisch, in den letzten Jahren oftmals mit innovativen und sehr sehenswerten Praxisbeispielen
  • PHP Advent – englisch, wie der Name vermuten lässt mit dem Schwerpunkt PHP-Entwicklung
  • HTML5Adventure Calendar 2010 – ebenfalls englisch, jeden Tag ein beeindruckendes Beispiel was mit HTML5 möglich ist

Bei den Webkrauts sei noch darauf hingewiesen, dass sich hinter dem dritten Törchen ein Artikel von mir zum Thema „Geolocation API“ befindet. Wünsche euch viel Spaß an den kommenden 11 Tagen an denen ein „Törchen“ geöffnet wird. Solltet ihr noch themenrelevante Kalender kennen die hier nicht gelistet sind: ich freue mich über einen Hinweis als Kommentar!

W3C Geolocation API Polyfill

Ich habe meine freie Zeit gerade etwas genutzt um ein Javascript zu erstellen, mit dem man aus dem Browser heraus auf eine einheitliche Geolocation API zugreifen kann. Aktuell unterstützt das Script offiziell die folgenden Browser:

  • Android Webkit
  • Android Dolphin HD
  • Apple iPhone/iPod Safari iOS 3.0+
  • Blackberry OS 4.1+
  • Firefox 3.5+
  • Firefox < 3.5 mit Geode Addon
  • Google Chrome
  • Opera 10.6+
  • Alle Browsers mit installiertem Google Gears

Andere Browser bieten zur Zeit keine Unterstützung für Geolocation (korrigiert mich bitte wenn ich einem Browser Unrecht tue).

Wie wird das Script verwendet?

Das Script muss einfach vor dem ersten Geolocation Request eines Dokuments mittels <script src="geolocation.js"></script> eingebunden werden. Danach kann einheitlich durch navigator.geolocation.* auf die Methoden aus dem W3C Standard zugegriffen werden. Namentlich sind das getCurrentPosition(), watchPosition() und clearWatch().

Das Script mappt dann die proprietären Abfragemethoden (Blackberry Location, Google Gears) auf das navigator.geolocation Objekt und stellt eine einheitliche API zur Abfrage bereit.

Demo

http://www.manuel-bieh.de/publikationen/scripts/geolocation/demo.html

Download

Das Script gibt es bei Github und auf Google Code. Zieht es euch dort, wo es euch lieber ist. Ich halte für gewöhnlich beide Versionen auf dem aktuellen Stand
Google Code: http://code.google.com/p/better-geolocation-api/
Github: https://github.com/manuelbieh/Geolocation-API-Polyfill