0

スクリーンブラウザが699px以上になるファイルを常に含める必要があります。このため、次のスクリプトを使用しようとしています。

<script type="text/javascript">
<!--
if (screen.width >= 699) {
document.write (" <!--#include virtual="/menu.asp"-->");
}
//-->
</script>

しかし、それは何もしません。誰かがそれを機能させる方法を知っていますか?

よろしくお願いします。

4

3 に答える 3

1

ページがブラウザに渡された後、JavaScript が起動します。ASP インクルードは、ページがレンダリングされる前に、サーバー側で行う必要があります。

于 2012-12-08T18:51:01.943 に答える
1

include ディレクティブは、Web ブラウザーに到達するにページの一部である必要があります。また、JavaScript は Web ブラウザーで実行されるため、既に手遅れです。インクルードをページに入れ、divwithstyle="display:none;"で非表示にし、ページの読み込み時に JavaScript を使用してそれを削除することを検討してください。

<script type="text/javascript">
window.addEventListener('load', function(){
    if (screen.width >= 699)
        document.getElementById('myHiddenElement').style.display = null;
});
</script>

あるいは、 CSS Media Queriesで同じ戦略を使用することもできます。

編集:例:

<style type="text/css">
#myHiddenElement {
    display: none;
}
@media screen and (min-width: 699px) {
    #myHiddenElement {
        display: block;
    }
}
</style>

これにより、パフォーマンスが向上し、ユーザーがブラウザー ウィンドウのサイズを変更すると、コンテンツが自動的に表示または非表示になります。

于 2012-12-08T18:52:00.853 に答える
1

<!--#include virtual="/menu.asp"-->は SSI 構文です (ASP Classic もその構文を借用していると思います)。どちらの方法でも、サーバーがサポートしている場合は、サーバー上で処理され、ファイルのコンテンツに置き換えられます。

サーバー側のすべての処理が完了すると、結果がクライアントに配信されます。

ファイルの内容が何であれ、"JavaScript 文字列リテラルを壊す文字や改行が含まれている可能性があります。

経験則として、より広い画面に追加のコンテンツを表示したい場合は、次のようにする必要があります。

  • ページに常にコンテンツを含める
  • 画面サイズよりもウィンドウサイズを気にする
  • CSSメディア クエリを使用して、サイズに基づいてスタイルを変更します
  • 一部を完全に非表示にするのではなく、狭いウィンドウに次々とコンテンツを表示する

狭い画面でコンテンツをまったく読み込まないようにしたい場合は、JavaScript を使用して画面/ウィンドウのサイズをテストし、XMLHttpRequestを使用して追加のコンテンツを読み込み、DOM を使用してページに追加します。

于 2012-12-08T18:52:30.687 に答える