【发布时间】:2012-09-06 16:29:59
【问题描述】:
我无法解决这个问题。我在HTML 页面中有几个 Div。每个 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:.... 并且 Div2 是 display='none' 当我使用 style.display = 'none'; 隐藏 Div1 时,它确实将其从屏幕中删除并且允许我显示 Div2..但是背景图像仍然存在于浏览器内存中。
有趣且我无法理解的是,当我将 style.display = 'none' 用于父 DIV1 时,如果我将 background-img 放入 DIV1 内的子 div(div1a) 中,子 div1a 图像确实会得到当我在父 DIV1 上使用 style.display = 'none' 时从浏览器内存中删除。但是我发现这也不一致....它似乎适用于某些父 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
【问题讨论】:
-
请通过代码展示您的示例。更容易理解。
-
为什么说图片已从浏览器内存中删除?你如何测试这个?
-
@JeremyJStarcher 我正在查看 document(index.html) > images 中资源选项卡下的 chrome 检查器
-
@Drew 只要您的代码中有一个指向必须在某个时候加载的资源的链接,它就会显示在资源选项卡中。这个问题应该可以结束了。
-
Jeremy 的简短回答:浏览器在管理内存方面做得非常好。除非您正在编写应用程序并意外地将内存锁定在闭包中,否则不要担心。 (IE6 除外——那完全是“另一锅鱼”。)
标签: javascript css html