Desktop-Mobile-Weiche

14 February 2015 - 10:34 | Version 4 |

1. Worum geht es?

Das Biblionetz existiert in zwei Varianten:
  • Desktop: Für grosse Bildschirme, grosser Bandbreite und evtl. mit Pugins wie Java, Flash etc
  • Mobile: Für kleine Bildschirme, kleine Bandbreite etc.

Nun soll die Umleitung möglichst rasch und problemlos geschehen.

2. Auf einer Desktopseite

2.1 Beim Seitenaufruf

  • Wenn
    • a) es ein mobiles Gerät ist
    • b) und kein Cookie StayDesktop gibt
    • c) und die mobile Seite existiert
  • dann
    • wechsle auf die mobile Seite

Gelöst wird das mit dem Modul mod_rewrite von Apache (denn damit werden am wenigsten Daten übetragen). Die Erkennung von Mobilgeräten stammt von http://detectmobilebrowsers.com/, die Erweiterung |android|ipad|playbook|silk für Tablets ist eingebaut.

RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|xda|xiino|android|ipad|playbook|silk [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]
RewriteCond %{DOCUMENT_ROOT}/bibliothek/$1-m.html -f 
RewriteCond %{HTTP_COOKIE} !^.*StayDesktop.*$ 
RewriteRule ^/bibliothek/([a-z]+[0-9]+)\.html /bibliothek/$1-m.html

2.2 Auf der Seite selbst

function goMobile(){
   document.cookie="StayMobile=1";
   document.cookie = "StayDesktop=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; 
   window.location.href = window.location.href.replace(/.html/, '-m.html');
};

3. Auf einer Mobile-Seite

3.1 Beim Seitenaufruf

3.2 Auf der Seite selbst

Unten im Footer jeder Seite hat es einen Link namens Desktop, der die Funktion goDesktop() aufruft. Die sieht folgendermassen aus:

function goDesktop(){
   document.cookie="StayDesktop=1";
   document.cookie = "StayMobile=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; 
   window.location.href = window.location.href.replace(/-m.html/, '.html');
};

Diese Funktion setzt ein Cookie und lädt danach eine neue Seite.

Weil es diesen Link noch nicht überall hat, wird er übergangsmässig per jQuery dynamisch eingebaut:

$("div[data-role='footer']>h5").append("- <a href='javascript:goDesktop()'>Desktop</a>");

-- BeatDoebeli - 13 Feb 2015
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding arbeitsgruppe.ch? Send feedback
This page was cached on 28 May 2025 - 13:33.