0

私の問題はこれと似ていますが、ブラウザの幅が850px未満の場合にのみ画像を削除したいので、サーバー側ではできません。
私は現在これを使用しています:

$(function () {
    if($(document).width() < 850) {
        $('.thumb').remove();
    }
});

画像は削除されますが、ここでわかるように、ブラウザーは画像を読み込みます。
誰かがこれに対する解決策を持っていますか?

ありがとう

解決策 (それは今動作します!:

ブラウザーが 850 HTML を超える場合を除き、画像を常に読み込むのではなく、読み込まないようにします。

<?php 
if(file_exists($sites[$i].'/thumb.png')) { ?>
    <img class="thumb" data="/experiments/<?=$sites[$i]?>/thumb.png" />
<?php 
} 
?>

JS:

$('.thumb').each(function(index, element) {

        $(this).attr('src', $(this).attr('data'));
});
4

3 に答える 3

3

私はあなたがそれを逆に向けなければならないと思います:あなたがドキュメントの場合にのみ画像をロードすることを意味します。幅は850より広いです。私が知る限り、画像がHTMLドキュメントに「ハードコーディング」されている場合、スクリプトが実行される前に画像が要求/ロードされます。

于 2012-12-29T19:24:10.813 に答える
0

もちろん。Remove() は最初にそれらをロードし、次に DOM から削除します。

ブラウザが読み込まないようにそれらを削除する唯一の方法は、サーバー側の言語を使用することです。サーバー側の言語では、画像がページ上にあるかどうかを検出でき、ある場合はそれらを削除できます。したがって、画像がブラウザに送信されることはありません。

あなたの場合は、「if($(document).width() < 850)」が使用されているため、サーバー側ですべてを行うことはできません。

サーバー側とブラウザ側を交換してみませんか?PHP や JavaScript が好きですか?

たとえば、ドキュメントの幅が 850 未満かどうかを JavaScript で検出できます。そうである場合は、パラメータ (remove=true) を使用して iframe をロードします。iframe ページにはすべての .thumb と画像、およびすべてのコンテンツが含まれ、ページで PHP を使用して、「remove=true」パラメーターが存在するかどうかを検出できます ($_GET[remove] を使用)。その場合、.thumb は表示されず、ブラウザに送信されません。

于 2012-12-29T19:31:59.153 に答える
0

KG Christensen さんと、画像のsrc属性を設定するというあなたのアイデアは良いものです。

機能する可能性のある別のアイデアは、画像にdisplay: none;スタイルを設定しdisplay: inline;、条件が満たされた場合にのみ変更することです。画像が非表示になっている場合、ブラウザーは画像を読み込んではいけません。

次のようなもの:

<style type="text/css">
.thumb {
  display: none;
}
</style>

<script type="text/javascript">
$(document).ready(function() {
  if ($(document).width() >= 850)
    $('.thumb').show();
});
</script>
于 2012-12-29T19:36:20.013 に答える