Aller au contenu | Aller au menu | Aller à la recherche


Développement Web sur Mobile

Smartphones (Android, iPhone, Windows Phones), l'horreur pour les développeurs Web qui codent à destination de ces mobiles, qui eux même peuvent avoir des navigateurs différents (gérant le HTML 4 et le 5 ou non, voir partiellement), avec du matériel divers tel que la présence de GPS, ce qui avec les résolutions d'écran différentes portent le nombre de combinaison à gérer au point du désespoir :)

Différents smartphones

  • OS : Système d'exploitation
  • Navigateur (WebKit, Safari, Internet Explorer, Opera, Firefox, Dolphin, ...)
  • Résolutions

Exemples

HTC Desire

  • HTTP_X_WAP_PROFILE : http://www.htcmms.com.tw/Android/Co...
  • HTTP_USER_AGENT : Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
<rdf:Description rdf:ID="BrowserUA">
        <rdf:type rdf:resource="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#BrowserUA" />
        <prf:BrowserName>Android Browser</prf:BrowserName>
        <prf:BrowserVersion>0.6</prf:BrowserVersion>
        <prf:FramesCapable>Yes</prf:FramesCapable>
        <prf:HtmlVersion>4.0</prf:HtmlVersion>
        <prf:JavaAppletEnabled>No</prf:JavaAppletEnabled>
        <prf:JavaScriptEnabled>Yes</prf:JavaScriptEnabled>
        <prf:JavaScriptVersion>1.5</prf:JavaScriptVersion>
        <prf:PreferenceForFrames>Yes</prf:PreferenceForFrames>
        <prf:TablesCapable>Yes</prf:TablesCapable>
      </rdf:Description>
 
      <rdf:Description rdf:ID="HardwarePlatform">
 
        <prf:Model>HTC Desire A8181</prf:Model>
 
        <prf:PixelAspectRatio>1x1</prf:PixelAspectRatio>
        <prf:ScreenSize>480x800</prf:ScreenSize>
        <prf:ScreenSizeChar>25x21</prf:ScreenSizeChar>
 
        <mms:MmsMaxImageResolution>480x800</mms:MmsMaxImageResolution>

Xperia Arc

  • HTTP_X_WAP_PROFILE : http://wap.sonyericsson.com/UAprof/...
  • HTTP_USER_AGENT : Mozilla/5.0 (Linux; U; Android 2.3.3; fr-fr; SonyEricssonLT15i-o Build/3.0.1.A.0.150) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
<rdf:Description rdf:ID="BrowserUA">
        <rdf:type rdf:resource="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#BrowserUA"/>
 
	<!--  Browser Identification -->
        <prf:BrowserName>Android Browser</prf:BrowserName>
        <prf:BrowserVersion>2.3</prf:BrowserVersion>
        <prf:DownloadableBrowserApps>
          <rdf:Bag>
            <rdf:li>application/vnd.android.package-archive</rdf:li>
          </rdf:Bag>
        </prf:DownloadableBrowserApps>
 
        <!-- Capabilities -->
        <prf:FramesCapable>Yes</prf:FramesCapable>
        <prf:TablesCapable>Yes</prf:TablesCapable>
        <prf:PreferenceForFrames>Yes</prf:PreferenceForFrames>
        <prf:HtmlVersion>4.0</prf:HtmlVersion>
        <prf:XhtmlVersion>1.1</prf:XhtmlVersion>
 
        <!--  Applet / Script -->
        <prf:JavaAppletEnabled>No</prf:JavaAppletEnabled>
        <prf:JavaScriptEnabled>Yes</prf:JavaScriptEnabled>
        <prf:JavaScriptVersion>1.5</prf:JavaScriptVersion>
      </rdf:Description>
 
      <rdf:Description rdf:ID="HardwarePlatform">
 
        <prf:Model>LT15i</prf:Model>
 
        <prf:PixelAspectRatio>1x1</prf:PixelAspectRatio>
        <prf:ScreenSize>480x854</prf:ScreenSize>
        <prf:ScreenSizeChar>44x32</prf:ScreenSizeChar>
 
        <mms:MmsMaxImageResolution>1600x1200</mms:MmsMaxImageResolution>

Ressource

CSS

<link rel="stylesheet" media="screen and (min-width: 480px)" href="css/bigscreen.css" type="text/css" />
input[type=checkbox]
{
  /* Double-sized Checkboxes */
  -ms-transform: scale(2); /* IE */
  -moz-transform: scale(2); /* FF */
  -webkit-transform: scale(2); /* Safari and Chrome */
  -o-transform: scale(2); /* Opera */
  padding: 10px;
}

Ecran, détection résolution

function ecrire(texte) {
  document.getElementById("out").innerHTML = document.getElementById("out").innerHTML + '<br>' + texte;
}
 
function displayScreen() {
 ecrire(window.innerWidth + 'x' + window.innerHeight + ' window.innerWidth .innerHeight');
 ecrire(screen.width + 'x' + screen.height + ' screen.width .height');
 ecrire(window.screen.availWidth + 'x' + window.screen.availHeight + ' window.screen.availWidth .availHeight');
}
 
function updateOrientation(e) {
 ecrire('orientationChanged ! window.orientation:' + window.orientation);
 setTimeout("displayScreen()",20);
};
function updateResize(e) {
 ecrire('resizeChanged ! ');
};
// Event listener to determine change (horizontal/portrait)
window.addEventListener("orientationchange", updateOrientation);
window.addEventListener("resize", updateResize);
 
ecrire('Votre résolution est de '+screen.width+'x'+screen.height + ' , la place dispo est : ' + window.screen.availWidth+'x'+window.screen.availHeight + ' et le viewport: ' + window.innerWidth+'x'+window.innerHeight);
 
ecrire('window.orientation:' + window.orientation);
ecrire('window.DeviceOrientationEvent:' + (window.DeviceOrientationEvent?'YES':'NO'));
ecrire('window.OrientationEvent:' + (window.OrientationEvent?'YES':'NO'));
 
var supportsOrientationChange = "onorientationchange" in window,
                    orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";
ecrire('supportsOrientationChange:' + supportsOrientationChange);
ecrire('orientationEvent:' + orientationEvent);
 
ecrire('...now change something...');

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet