メディアクエリは、別のウィンドウ幅のための代替スタイルを提供するための優れたソリューションです。残念ながら、<script>
要素が同様に処理されるための属性はmedia
ではありません。
しかし、あなたのメディアクエリに基づいてブラウザによって選択されたスタイルシートに応じて、所望の.js
ファイルをロードするスクリプト読み込みスクリプトを提供することができます。私は直接、エレガントな方法でこれを行う方法を知らないが、それのための素敵なハックがあります。それぞれの.css
には、ブラウザによって適用されたスタイルシートを判断するために、ページがロードされた後にユニークな宣言(ダミー、設計上重要でない、または異なる)を「マーク」してJS内からチェックする必要があります。
HTMLは次のようになります。次のように
<style media="handheld, screen and (max-width:1023px)">
body { margin-top: 0px }
</style>
<style media="screen and (min-width:1024px)">
body { margin-top: 1px }
</style>
および添付JS:
function onLoad() {
var head = document.getElementsByTagName('head')[0];
var body = document.getElementsByTagName('body')[0];
var mark = window.getComputedStyle(body).getPropertyValue('margin-top');
var script = document.createElement('script');
script.setAttribute('src', mark=='0px' ? 'handheld.js' : 'screen.js');
head.appendChild(script);
}
これは仕事をしていませんが、唯一あたりの負荷ベースで。ユーザーがブラウザのウィンドウのサイズを変更する反応に反応するには、ウィジェットの幅を追跡し、必要に応じてページをリロードする必要があります。
なぜ異なるjavascriptファイルが必要ですか?ユーザーがウィンドウのサイズを変更した場合はどうなりますか? –
さまざまな幅に異なるコードが必要であることはほとんど疑問に思えます。 –
私はこれがメディアクエリを使って素晴らしいと思う何かを知っています。 jsを必要とする要素の多くは、モバイルスタイルシートでは存在しません。個人的にブラウザが一定の幅以下になると、jsの読み込みを完全に停止したいと思います。 –