PehBehBeh

Erfahrungen eines Hobby-Webentwicklers

iOS: Links in Web Apps im selben Fenster öffnen

| 6 Kommentare

In mobilen Apps unter iOS gibt es ein gravierendes Problem mit Web Apps, die dem Homescreen hinzugefügt werden. Sobald man auf einen Link klickt, öffnet sich dieser im Safari und nicht – wie vermutet – in der Web App.


Mit folgendem Trick kann man dieses Verhalten umgehen:

1
2
3
4
5
6
7
8
9
$(document).ready(function() {
    var deviceAgent = navigator.userAgent.toLowerCase();
    if (deviceAgent.match(/(iphone|ipod|ipad)/)) {
        $('a').on('click', function(e) {
            e.preventDefault();
            self.location = $(this).attr('href');
        });
    }
});

Hinweis: Im Snippet wird jQuery verwendet, auch wenn es für diese Zwecke nicht zwingend benötigt wird.

Dir hat der Artikel gefallen?
Dann abonniere doch den RSS-Feed!
  • Daniel

    Eine vielleicht etwas dumme Frage: Wie bekomme ich das den nun in HTML eingefügt?

  • $(document).ready(function() {
    var deviceAgent = navigator.userAgent.toLowerCase();
    if (deviceAgent.match(/(iphone|ipod|ipad)/)) {
    $(‚a‘).on(‚click‘, function(e) {
    e.preventDefault();
    self.location = $(this).attr(‚href‘);
    });
    }
    });

    So 🙂

    Vielen Dank, genau das hatte ich gesucht :D.

  • .
    .

    Nur ohne Punkte, hat er bei meinem vorherigen Kommentar raus gemacht

  • Andreas

    Hallo…
    Punkte weglassen verstehe ich nicht.
    Wenn ich es kopiere und einfüge funktioniert es bei mir nicht.
    Tim, bist du so nett und schreibst mal ein kleinen html Code mit
    Beispiel, irgend nen link.
    Wäre Dir dankbar.

  • Hi,

    ich hab ein bisschen was aus meinem Projekt genommen, vielleicht hilft euch das so.

    http://pastebin.com/FFUjjifm

  • Fabian

    Hallo!

    Danke das funktioniert ganz gut! Ein Problem hab ich aber noch. Bei meinem Projekt werden per ajax einige sachen nachgeladen. Wenn das passiert ist (nach x sekunden) werde ich leider wieder nach dem link klick zum mobile safari weitergeleitet. Muss ich das script in jede ajax-template datei (nutze smarty) einbinden? Hatte es bisher nur im header.