J'inclus une feuille de style alternative pour iPhone/iTouch. Dans un premier temps je voulais utiliser simplement le type de support handheld
:Comment faire pour que les navigateurs de bureau ignorent la requête multimédia css3 de l'iPhone
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='/css/homepage_handheld.xsl' media='handheld'?>
<?xml-stylesheet type='text/xsl' href='/css/homepage.xsl' media='all'?>
que j'ajouter au document DOM ainsi:
//Add handheld stylesheet
ProcessingInstruction pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='/css/homepage_handheld.xsl' media='handheld'");
doc.InsertBefore(pi, doc.DocumentElement);
//Default css, for everyone else
pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='/css/homepage.xsl' media='all'");
doc.InsertBefore(pi, doc.DocumentElement);
Malheureusement, Safari navigateur de l'iPhone ne supporte pas le type handheld
média . La solution proposée par Apple est d'utiliser un CSS3 requête média, en remplacement handheld
:
media='handheld'
avec une requête qui détecte iPhone- comme appareils:
media="only screen and (max-device-width: 480px)"
Note: 480px est- la largeur de l'iPhone retourné (ie paysage)
Donc j'inclus ce type de support dans mes liens de stylesheet:
//Add handheld stylesheet
ProcessingInstruction pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='/css/homepage_handheld.xsl' media='handheld'");
doc.InsertBefore(pi, doc.DocumentElement);
//BUG: iPhone doesn't support handheld media type. Use the CSS3 media query hack
pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='/css/homepage_handheld.xsl' media='only screen and (max-device-width: 480px)'");
doc.InsertBefore(pi, doc.DocumentElement);
//Default css, for everyone else
pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='/css/homepage.xsl' media='all'");
doc.InsertBefore(pi, doc.DocumentElement);
Ce qui donne le xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='/css/homepage_handheld.xsl' media='handheld'?>
<?xml-stylesheet type='text/xsl' href='/css/homepage_handheld.xsl' media='only screen and (max-device-width: 480px)'?>
<?xml-stylesheet type='text/xsl' href='/css/homepage.xsl' media='all'?>
Et tout semble être bon, sauf que les navigateurs maintenant (IE8, Chrome5) commencer à utiliser le xsl "de poche".
"navigateurs".
Note: Firefox (3.5) ne prend pas en charge le rendu
xml
contenu avecxml-stylesheet
du tout. C'est pourquoi je ne l'inclue pas dans la liste des "navigateurs".
j'ai essayé de déplacer les "tous" noeuds de feuille de style au-dessus des médias spécifiques à l'iPhone requête:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='/css/homepage_handheld.xsl' media='handheld'?>
<?xml-stylesheet type='text/xsl' href='/css/homepage.xsl' media='all'?>
<?xml-stylesheet type='text/xsl' href='/css/homepage_handheld.xsl' media='only screen and (max-device-width: 480px)'?>
Mais -à-dire et Chrome continuer à utiliser le only screen and (max-device-wisth: 480px)
type de support.
Comment puis-je avoir un stylesheet demander ordinateurs de poche, et une autre demande de « tout le monde ».