0

ブラウザーのビューポートを検出するためにプレーンなJavaScriptコードを使用していますが、これは次のとおりです。

function setLocation(url) {
   if (window.location.href.indexOf(url) === -1)
      window.location = url;
}

function reloadPage(width) {
    if (width < 701) {
        setLocation("layout700.php");
    } else if (width < 900) {
        setLocation("layout900.php");
    } else {
        setLocation("layout1200.php");
    }
}

var done = false;

function ready() {
    if(!done) {
        done = true;
        reloadPage(document.width);
    }
}

if(window.addEventListener) {
    window.addEventListener('DOMContentLoaded', ready, false);
    window.addEventListener('load', ready, false);
} else if(window.attachEvent) {
    window.attachEvent('onload', ready);
}

window.onresize = function() {
    reloadPage(document.width);
};

私の質問は:これで幅の範囲をどのように定義できますか?

私が言いたいのは……私が

function reloadPage(width) {
    if (width <= 701 && >= 480) {
        setLocation("layout700.php");
    } else if (width <= 900 && >= 701) {
        setLocation("layout900.php");
    } else {
        setLocation("layout1200.php");
    }
}

これが正しくない場合、正しい構文は何ですか?親切に助けてください。

4

3 に答える 3

1
function reloadPage(width) {
    if( width >= 480 ) {
      if (width <= 701 ) {
        setLocation("layout700.php");
      } else if ( width <= 900 ) {
          setLocation("layout900.php");
      } else {
         setLocation("layout1200.php");
      }
   }
}

あなたのコードから何が変更されましたか?
- 論理演算子 " && " の後に、変数名が記載されていません。これは誤りです。
- 2 番目の条件で " width > 701 " をチェックする必要はありません。これは、<= 701 であれば最初の条件が満たされているためです。
EDIT : ページが 480 より大きいことを確認するためのラッパー if() を追加しました。これは、それに固有のレイアウトがないためです。

于 2012-04-29T08:08:40.353 に答える
0

ジェレミーキースがブログに書いたばかりのこの( http://adactio.com/journal/5429/ )テクニックを借りて、content属性を使用して、関連するディメンションの正しいページを保存したいと思います。その後、メディアを使用できます。さまざまなサイズを区別するためのクエリ。

他に検討したいことがあります...DeviceAtlasまたはWUFRLを使用して、エンドユーザーのブラウザーを検出し、開始するための正しいレイアウトを提供します。リダイレクトは、エンドユーザーにとってはエクスペリエンスが低く、特にモバイルでは低速です。

于 2012-04-29T08:37:47.637 に答える
0

最大のものから始めて、最小のものに移動します。また、setLocation はすぐに実行を停止する必要があるため、必要に応じて「else」を省略できます。最後に、幅が 900 未満の場合、幅が 700 未満であっても、layout700 に移動する必要があると思いますか? 非常に薄いブラウザに最も適しているようです。

if (width>1200) {
  setLocation("layout1200.php"); }
if (width>900) {
  setLocation("layout900.php"); }
setLocation("layout700.php");
于 2012-04-29T08:02:50.130 に答える