おそらくメディアクエリは、モバイルユーザーに代替スタイルを提供するための最良のソリューションです。残念ながら、<script>
要素がページロジックの場合に同様に処理するための属性はmedia
ではありません。
ただし、メディアクエリに基づいてブラウザによって選択されたスタイルシートに応じて、希望する.js
ファイルをロードするスクリプトローダーを提供することはできます。私は直接、エレガントな方法でこれを行う方法を知らないが、それのための素敵なハックがあります。それぞれの.css
には、ブラウザによって適用されたスタイルシートを判断するために、ページがロードされた後にユニークな宣言(ダミー、設計上重要でない、または異なる)を「マーク」してJS内からチェックする必要があります。
CSSは次のようになります。次のように
@media handheld, screen and (max-width:1023px) {
body {margin-top: 1px}
}
@media screen and (min-width:1024px) {
body {margin-top: 0px}
}
/* These would be separate .css files in a real example */
とそれに付随するJS:
window.setTimeout('wait()', 10);
function wait() {
if (!document.body)
window.setTimeout('wait()', 100)
else
onLoad();
}
function onLoad() {
var load = document.createElement('script');
var head = document.getElementsByTagName('head')[0];
var body = document.getElementsByTagName('body')[0];
var mark = window.getComputedStyle(body).getPropertyValue('margin-top');
switch (mark) {
case '0px':
load.setAttribute('src', 'handheld.js');
break;
case '1px':
load.setAttribute('src', 'screen.js');
break;
default:
load.setAttribute('src', 'somethingelse.js');
}
head.appendChild(load);
}
モバイルユーザーを検出に関する非常に多くの質問があります。 – gdoron
私はそれがCSSを使用して行うことができるとは思わない...あなたはJSでそれをやってみましたか? –
モバイル・スタイルシートにリダイレクトしたのと同じロジックを使用して、JSコードをチェックして実行する必要があるかどうかを判断できるフラグを設定するのはなぜですか? – jmort253