Workaround fürs I-Phone

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Workaround fürs I-Phone

    Hallo,
    da ist mir doch neulich bei nem Kumpel was doofes aufgefallen...
    Da hab ich mir so viel Mühe gegeben, damit die Webseite unserer Band auf allen Browsern gleich aussieht (der I-Ex mal wieder als Problemkind Nr.1), und dann macht einem die moderne Technik wieder einen Strich durch die Rechnung.
    Aber fangen wir vorne an: HORUS-web.de ist die besagte Webseite (CSS-Datei gibts hier) und wie dem geneigten Betrachter auffallen könnte, habe ich mit "position: fixed;" gearbeitet um das Menü und die Fußleiste an ihrem Platz zu halten. Das funktioniert auf normalen Rechner auch in so gut wie jedem Browser (mir hat noch keiner berichtet es gäbe Probleme). Jetzt hab ich die Seite neulich mal bei nem Freund über sein I-Phone aufgerufen, und musste feststellen, dass "position: fixed;" dort auch funktioniert, nur etwas anders. Die Fußzeile und das Menü scrollen nämlich mit, was zu dem Problem führt, das Teile des Inhalts grundsätzlich verdeckt sind.
    Meine Vermutung: Der Browser des I-Phones lädt die Seite, wie sie bei einer 800x600er Bildschirmauflösung aussehen würde, und erstellt dann eine Art erweiterten Screenshot, auf dem auch das drauf ist was sich unterhalb der Bildschirmkante befindet, damit die Seite scroll- und zoom-bar wird. Auf so einem Screenshot bleiben Grafiken natürlich wo sie sind, und scrollen mit... blöde Sache das.
    Meine Lösungs-Idee: Kopf und Fußzeile wie bei vielen anderen Seiten auch, als grundsätzlich mitscrollend auslegen, und zwar jehweils ganz oben bzw ganz unten vom Inhalt. Dies aber nur fürs I-Phone.
    Frage: Wie? Lässt sich das mit einer Browser-Weiche machen? So weit ich weiß arbeitet das I-Phone mit dem Safari-Browser, der normale Safari des I-Mac stellt die Seite aber richtig dar. Wie kann ich also filtern ob die Anfrage von einem I-Phone kommt? Und wenn ich die Browser-Weiche habe, wie überschreibe ich dann die Positions-Angaben in der originalen CSS-Datei?
    Die Änderungen selbst sind garnicht so aufwändig. Die Kopfzeile bekommt ein "position: absolute;" und die Fußzeile ein "position: relative;" und schon hat sich das ganze.

    Und um das Problem gleich noch etwas umfassender zu erschlagen: Gibt es noch andere Mobile-Browser die behaupten sie könnten "das richtige Internet" darstellen und trotzdem Probleme damit haben könnten?

    TIA
    Look
  • also zur Weiche: Der User-Agent des iPhones sieht (je nach Version) ungefähr so aus:
    Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16

    D.h. wenn du nach "iphone" im useragent suchst, sollte das kein Problem sein.
    Bei den anderen Dingen kann ich dir leider nicht helfen.

    Edit: Achja, zum Testen von Browserweichen kann ich das Firefox-Addon "User Agent Switcher" wärmstens empfehlen ;)
  • Also der "User Agent Switcher" war schonmal eine gute Empfehlung!
    Die Bezeichnung die das I-Phone mit sendet ist auch durchaus hilfreich. Allerdings bin ich scheinbar zu blöd ne funktionierende Browserweiche ein zu setzen.

    Quellcode

    1. <!--[if iPhone]>
    2. <style type="text/css">
    3. <!--
    4. @import url("CSS/iphone.css");
    5. -->
    6. </style>
    7. <![endif]-->

    Das funktiniert scheinbar nur beim I-Ex, leider nicht beim IPhone.
    Die einzige Lösung die mir eingefallen ist, läuft mit JavaScript über "navigator.platform". Allerdings bin ich nicht grade ein Freund von JS...
    Geht das nicht auch anders?
  • Was kann er denn?

    Ansonsten bliebe dir noch eine Browser-Weiche auf dem Client mit JavaScript-Basis; dann mit dem Risiko, dass Nutzer dies deaktivert haben und ein möglicherweise unpassendes Stylesheet, nämlich das Default, nutzen müssen. - Aber damit müssen sie dann leben. ;)

    Teil Lösungen dazu:
    Browser-Weiche [hier ]
    Stylesheet-Switcher [hier ]
  • So weit ich weiß, kann der Server HTML-Dokumente übermitteln, und das wars. Ist nicht meiner, aber viel kann er nicht, das hab ich schon raus bekommen.

    Naja, wie gesagt, eine Lösung in JavaScript habe ich bereits mittels des navigators, aber wie ebenfalls erwähnt, bin ich nicht grad ein Fan von JS. Gabs da nicht mal ne Möglichkeit eine clientseitige Browserweiche zu erstellen mit purem HTML/CSS?
  • Ohne dynamische Anpassung bleiben dir meines Wissens nach noch Browserweichen wie du sie für den IE verwendest, CSS-Hacks, die ich nicht verwenden würde, und das media-Attribut des link Tags, über das du deine Stylesheets einbinden kannst. Erstere kenne ich nur für den IE, der sie als Einziger auswertet. Zweitere funktionieren meist nur für ganz bestimmte Versionen eines Browsers und basieren meist auf fehlerhafter Interpretation... also extrem wartungsaufwändig.
    Letztere Variante würde dann so aussehen:

    Quellcode

    1. <link rel="stylesheet" type="text/css" href="mobile.css" media="handheld" />

    Wenn das iPhone dieses Attribut auswertet, würde das funktionieren. Diese Lösung erschlägt dann alle Handheld Geräte, solange diese es auch auswerten. Eine feinere Granulierung bei der Auswahl ist so nicht möglich.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von evilwm ()

  • Ok, es musste dann leider doch mit Java-Script sein, anders klappts leider nicht, is das I-Phone zu doof für.
    Hab gestern abend von einem I-Phone Nutzer noch den Vorwurf bekommen, ich wäre ja selbst schuld, mit Frames wäre das so einfach... Leider ließ er sich nicht davorn überzeugen das man von Frames besser die Finger lässt.

    Naja, THX 4 HLP
    Look
  • Hi,


    ich hab es nicht ganz gelesen, kann es leider momentan auch nicht austesten, aber es sieht interessant aus:
    personal.psu.edu/drs18/blogs/d…2007/07/iphone_css_1.html

    Quellcode

    1. <link media=”only screen and (max-device-width: 480px)”
    2. href=”iPhone.css” type=”text/css” rel=”stylesheet” />


    Die Syntax habe ich vorher nie gesehen, wenn du es testen solltest, schreib mal bitte, ob es funktioniert :)
  • Danke für den Tipp Vince.
    Vieleicht bin ich ja auch einfach nur zu dämlich um das richtig an zu wenden, ich hab den Code so übernommen wie er bei dir im Post stand und in den Head gesetzt, nur den Pfad zur CSS-Datei hab ich angepasst. Ergebnis: Nada, Nullina, Nothing. Kurz: Funktioniert nicht.

    Naja, muss es wohl doch die JavaScript-Variante sein...
    Trotzdem danke für eure Hilfe!