3

JavaScriptを使用して画像の読み込みをキャンセルする方法を探しています。私は他の質問を見てきましたが、それらを隠すだけでは十分ではありません。また、ページの残りの部分をロードする必要があります (window.stop() は問題外です)。

ロードされているページは私の管理下にありません。1 つだけ保証さ<script>れています。ページの最初は私の JavaScript (軽量 - jquery なし) です。

すべての img ソースを何も設定しないようにしましたが、ページが解析された後に dom が作成され、すべてのブラウザーが同じ動作をするため、解決しませんでした。img は解析後に読み込まれます。

4

7 に答える 7

6

最新のブラウザでは不可能です。JavaScript ブラウザーで画像タグの src 属性を変更しても、画像の読み込みを要求します。これは、 Lazy Load プラグインの開発から知っています。

于 2012-12-25T15:27:05.020 に答える
1

画像の読み込みを停止する唯一の方法はsrc、画像自体に属性が存在しないようにし、カスタムdata-*属性を使用して画像の場所を保持することです。

<img data-src="http://path.to/image.png" />

明らかに、これはこれらの (確かにまれな) JavaScript が無効になっているブラウザーでは正常に低下しないため、noscriptフォールバックが必要です。

<img data-src="http://path.to/image.png" />
<noscript><img src="http://path.to/image.png" /></noscript>

そして、これを単純な関数と組み合わせて、あなたまたはユーザーが準備が整ったときに画像をロードします。

/* simple demo */
function imagePopulate(within, attr) {
    within = within && within.nodeType == 1 ? within : document;
    attr = attr || 'data-src';
    var images = within.getElementsByTagName('img');
    for (var i = 0, len = images.length; i < len; i++) {
        if (images[i].parentNode.tagName.toLowerCase() !== 'noscript') {
            images[i].src = images[i].getAttribute(attr);
        }
    }
}

document.getElementById('addImages').onclick = function(){
    imagePopulate();
};

JS フィドルのデモ

すべてのブラウザーで確実なことはわかりませんが、これは Chrome で動作するようです (開発者ツールのネットワーク タブを見て、 noscript-containedをロードしようとする試みはありませんimg)。

于 2012-12-25T15:50:14.417 に答える
0

プロキシが必要です。

スクリプトは、次のようなものを使用して別のサーバーにリダイレクトできます

location.replace('http://yourserver.com/rewrite/php?url='+escape(this.href));

画像の読み込みをキャンセルしたい理由と、読み込み中のサイトを教えていただければ、より良い解決策を見つけることができます

画像以外のページに何もない場合は、試すことができます

document.write('<base href="http://yourserver.com/" />');

これにより、ページ上のすべての非絶対 src および href が台無しになります。

UPDATE恐ろしいハックですが、おそらくこのほとんど疑似コード(私は寝ています)は何かをするでしょう

document.write('<script src="jquery.js"></script><div id="myDiv"></div><!-'+'-');
$(function() { 
  $.get(location.href,function(data) {
    $("#myDiv").html(data.replace(/src=/g,'xsrc='));
  });
})
于 2012-12-25T14:12:06.540 に答える
0

onload イベントの呼び出し:

window.onload=function(){
imgs = document.getElementsByTagName('img');

for(i = 0; i < imgs.length(); i++){
imgs[i].src = '#';
}
};
于 2012-12-25T14:05:07.160 に答える
0

画像の読み込みのみをキャンセルしたい場合は、sємsємのソリューションを使用できますが、window onload イベントを使用しても機能しないと思います。

おそらく、画像の読み込みをキャンセルするボタンを提供する必要があります。また、 src 属性を "#" に設定する代わりに、 removeAttribute()を使用して src 属性自体を削除することもお勧めします

[テスト中は必ずキャッシュを無効にしてください]

于 2012-12-25T14:20:19.893 に答える