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的缺点而浪费了这么多时间后发现一些有用的东西很兴奋)
这肯定是记录得很差,因为它被认为是 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 真是太悲伤了)