IE6:背景图像加载事件

tob*_*oby 18 javascript css jquery css-sprites internet-explorer-6

我正在显示一堆缩略图并且延迟可能非常高(通过VPN)所以我将所有缩略图发送到单个文件(如精灵)并设置div的CSS背景图像和背景位置属性显示缩略图.我遇到的问题是使用IE6并弄清楚图像何时加载...我正在使用BackgroundImageCache hack:

document.execCommand("BackgroundImageCache",false,true);
Run Code Online (Sandbox Code Playgroud)

要检查图像何时加载,我使用以下代码:

$('<img>').attr('src', 'ThumbSpriteTest.png').load(function() {
    $('.Thumbnails').css('background-image', 'url(ThumbSpriteTest.png)');
});
Run Code Online (Sandbox Code Playgroud)

这适用于我尝试过的每个浏览器,除了IE6 ...即使缓存黑客它正在加载图像,触发事件,设置背景图像属性并再次下载图像(我的.Thumbnail元素是空白的,而它重新下载).

在我看来,缓存黑客只是改变了CSS引用的行为,而不是img标签.如何加载背景图像而不下载两次?IE6有可能吗?

编辑:使用:document.execCommand("BackgroundImageCache",true,true);似乎工作(两个参数都为'true').我在找到有关BackgroundImageCache命令及其参数的任何文档时遇到了问题(我发现了很多使用它来修复CSS问题的例子,但它们都false,true用作参数而不解释它们)... 赏金对于在BackgroundImageCache命令及其参数上具有良好信息/文档的任何人来说仍然是好的!

(我不知道为什么我因为IE的缺点而浪费了这么多时间后发现一些有用的东西很兴奋)

Pic*_*tor 3

这肯定是记录得很差,因为它被认为是 ie6 的修补程序,并且将保持这种状态,因为这已经在 ie8 中得到修复。无论如何,这就是关于它的挖掘内容。

execCommand方法:http://msdn.microsoft.com/en-us/library/ms536419 (v=vs.85).aspx

 bSuccess = object.execCommand(sCommand [, bUserInterface] [, vValue]);
 //sCommand is the name of command to execute
 //[bUse...] is to give permission to display a dialog window (if applicable)
 //[vValue] value to pass as parameter to the command
Run Code Online (Sandbox Code Playgroud)

[bUserInterface]:只是对话框的布尔指示符,并非所有可能的命令都使用它。但用于例如保存文件/创建链接/等...例如:http ://man.ddvip.com/web/dhtml/constants/createlink.html

所以你可能想检查这个值在设置为 false 时是否有效,理论上它应该有效......但是修补程序可能会因为有趣的原因而中断。

关于修补程序: http: //support.microsoft.com/kb/823727

无论如何,这个功能只是作为IE6的补丁出现。所以不要假设它适用于所有 ie6 浏览器。虽然引入它是为了防止多次加载+泄漏,而不是按照您使用它的方式“缓存”,但它仍然按照名称所暗示的那样(希望如此)。所以不要感到惊讶它在未修补的版本上出现问题(自动更新应该可以解决这个问题)

出现该警告后,如果您有依赖于它的功能,请捕获成功或失败布尔值的执行。我想充分利用你所拥有的(被迫支持 ie6 真是太悲伤了)