我注意到当动态更改图像源属性时(在我的例子中,使用 jQuery),即使图像从未被浏览器调用/缓存(即未预加载),浏览器仍会获取它——而且没有 ajax。这在所有 5 个主要浏览器(ie7+)中都对我有用。
问题:这是我可以无限期依赖的正式标准化行为吗?
最佳答案
DOM 有两种称为重排和重绘的行为,它们将强制重绘其元素(颜色、大小)。只要 DOM 中的“用于构建渲染树的输入信息”发生变化,就会触发这些行为(这里对所有这些都有很好的描述:Rendering: repaint, reflow/relayout, restyle)
对于你的问题,当这个被触发时,浏览器也会尝试获取src链接,包括javascript;所以我们可以动态插入脚本/样式链接,DOM 将执行它。
这也会影响性能。你可以想象在 CSS 中我们为不同的状态使用不同的图像,例如,当样式背景图像因悬停状态而改变时。如果 DOM 在加载时获取所有图像,则初始渲染时会变慢。所以浏览器被设计成动态加载 src。
关于javascript - 当 src 被动态重新定义时,浏览器是否应该自动获取图像,w/o ajax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5376186/