1

これに頭を包むことはできません。1ページにいくつかのDivがありHTMLます。各Divは異なるセクションを表すため、そのセクションの異なる画像が含まれます。すべての画像はcssから参照され、javascript(document.getElementById('DIV').style.display='none/block';)を使用して表示/削除されます。

この例の目的のために、私が2つのdivを持っているとしましょう。各セクションDiv(Div1&Div2)は親divになり、それらの親内のDivはすべてその子になります。(DIV1a、DIV2a)

Div1がdisplay:blockを使用して設定され、css Background-image:....を使用しているdisplay='none'場合、Div2を使用してDiv1を非表示にstyle.display = 'none';すると、画面から削除され、Div2を表示できるようになります。 background-imageはブラウザのメモリにまだ存在しています。

興味深いことに、頭を包むことができないstyle.display = 'none'のは、親DIV1に使用するときに、background-imgをDIV1内の子div(div1a)に配置すると、子div1a画像がブラウザのメモリから削除される場合です。style.display = 'none'親DIV1で使用します。ただし、これも一貫性がないことがわかりました。一部の親divで機能し、他のdivでは機能しないようです。

この時点でおそらくお分かりのように、私はひどく混乱していて、これにどのようにアプローチするかを本当に知りません。

お手数をおかけしますが、よろしくお願いいたします。

コード例:

この方法を使用する場合

<div id="Div1">
    content....
</div>

<div id="Div2" style="display: none">
    ...content
</div>

div#Div1{
    background-image: url(images/mybg.png);
    background-repeat: no-repeat;
    width: 480px;
    height: 360px;
}

document.getElementById("Div1").style.display='none';
document.getElementById("Div2").style.display='block';

上記のJavaScriptを実行しても、画像は[リソース]タブに表示されたままになります

この方法を使用する場合:

<div id="Div1">
    <div id="Div1a">
        content....
    </div>
</div>

<div id="Div2" style="display: none">
    content....
</div>

div#Div1a{
    background-image: url(images/mybg.png);
    background-repeat: no-repeat;
    width: 480px;
    height: 360px;
}

document.getElementById("Div1").style.display='none';
document.getElementById("Div2").style.display='block';

上記のJavaScriptを実行すると、画像が[リソース]タブから削除されます...しかし、この効果には一貫性がなく、常に機能するとは限りません:s

4

1 に答える 1

4

に何かを設定してdisplay: noneも、どのブラウザのメモリからも何も削除されません。DOM要素全体は、同じ量のメモリを占有しているDOM内にあり、ビューとレイアウトから非表示としてマークされているだけです。

要素を実際にメモリから削除する場合は、通常はANDを使用して、要素をDOMから物理的に削除する必要がありparent.removeChild(child)ます。また、JavaScriptのどこにも、ガベージコレクションを防ぐDOM要素への参照がないことを確認してください。


また、ブラウザのメモリ使用量をどのように評価しているかはわかりませんが、メモリがメモリの内部プールから解放された可能性があるため、ほとんどの方法では、ブラウザが特定の画像を解放したかどうかを正確に検出できません(再利用)、ただしOSには返されません。画像をリリースするだけでは、必ずしもブラウザのメモリ使用量が削減されるとは限りません。表示される内容は、ブラウザ固有であり、OS固有でさえあり、メモリ使用量を調べるために使用しているツールに正確に依存します。

于 2012-09-06T17:04:26.430 に答える