iPhone以外のすべてのブラウザーから CSS を非表示にする方法を知っています。ブラウザー スニッフィングなしで、スタイルシートを iPhone (IE ではなく) だけに適用するにはどうすればよいですか? を参照してください。
しかし: CSS を iPhone から非表示にするにはどうすればよいですか?
iPhone以外のすべてのブラウザーから CSS を非表示にする方法を知っています。ブラウザー スニッフィングなしで、スタイルシートを iPhone (IE ではなく) だけに適用するにはどうすればよいですか? を参照してください。
しかし: CSS を iPhone から非表示にするにはどうすればよいですか?
あなたはおそらく使用することができます@media queries
:
<link rel="stylesheet" href="noniPhoneStylesheet1.css" media="only screen and (min-device-width:490px)" />
これにより、iPhoneブラウザはその特定のスタイルシートのダウンロードから自動的に除外されます(iPhoneの画面幅は480pxです)。したがって、iPhoneから隠したいスタイルをそのスタイルシートに入れるとうまくいくはずです。ただし、明らかに、メディアクエリを尊重し、画面幅が490px未満の他のデバイスからのスタイルシートもブロックします。
iPhone の場合は、iPhone CSS を追加するか、通常の CSS を追加します。
var agent=navigator.userAgent.toLowerCase();
var isIPhone = ((agent.indexOf('iphone')!=-1);
if (isIPhone)
document.createElement("style")... //iPhone CSS
else
document.createElement("style")... //normal CSS
getComputedStyle
私は実際、メディアクエリを使用し、iPhoneのようなデバイスを使用している場合はモバイルサイトにリダイレクトする、わずかに異なる、非常にばかげたソリューションを採用することになりました。
<style media="only screen and (max-device-width: 480px)">html{border-top-style:dashed;}</style>
<script>
if(window.location.search.indexOf("?m=t")==-1 && window.getComputedStyle) {
var mobile = false;
if(window.getComputedStyle(document.getElementsByTagName("html")[0],null).getPropertyValue("border-top-style")=="dashed") {
var mobile = true;
}
if(mobile) {
window.location.replace(window.location+"?m=t");
}
}
</script>
Stack Overflowのアイデアは確かにgetComputedStyle
ありますが、どこにあるのか思い出せません。
または、CSS のないページへの単純なリダイレクト、または PHP を使用して iPhone を検出し、スタイルのないページを配信します。
if iPhone {
echo //page without CSS
else {
echo //page with CSS
}