jQuery Mobile: Event ausführen bei Seitenaufruf-Start mit Hash

Bei einem Kunden der eine mobile Web-App braucht, hatte ich vorhin das Problem das ich nicht ein Event von jQuery Mobile in der Übersicht gefunden hatte, welches auch auf ein komplettes Neuladen reagiert.

Es gibt zwar genug Events die bei einem Seitenwechsel anspringen und das auch korrekt (z.B. pagecreate, pageshow oder pagechange), aber nicht eines wird angetriggert wenn man eine Unterseite (z.B. myWebapp.html#sub) direkt aufruft.

Deswegen musste ich mir schnell einen Fix für diese Situation überlegen, den ich euch natürlich nicht vorenthalten möchte:

var activePage = $.mobile.activePage.data('url');
if (activePage.slice(0, 1) != '/') {
  var startupDiv = $('div#' + activePage);
  if (startupDiv.length == 1) {
     startupDiv.trigger('pagecreate');
  }
}

Der Code bewirkt das euer pagecreate-Trigger nun auch nicht nur beim Seitenwechsel sondern auch beim direkten Aufruf der Unterseite im Browser aufgerufen wird.

Platziert zwischen $(function() { und }); sieht das Ganze nicht sonderlich kompliziert aus, für den Einen oder Anderen der via Google auf diesen Beitrag stößt, ist es aber vielleicht eine willkommene & schnelle Hilfe.

Viel Erfolg weiterhin! 🙂

Flattr this!