2010-01-04 31 views
0

我正在试验jQuery插件。我有这样的代码在“收藏夹”褪色:动画不透明不适用于IE或Opera

$('#cleverbox') 
    .css({ opacity:0, visibility:'visible' }) 
    .animate({opacity:1}, 2000); 

它适用于Firefox和Chrome罚款,但在IE(7,8)和Opera的元素只是出现,而不是在被褪有一个一堆类似的问题,但我还没有找到一个可行的解决方案。

我有一个example page。我也有一些其他问题:

  1. 在Internet Explorer(7,8),第一缩略图永远不会显示在收藏夹(在onload事件永远不会触发)。
  2. 在IE7中,修复ClearType错误的代码不起作用。 $(this).css('opacity', '')应删除不透明风格(在这种情况下,'过滤器'属性),但它不会将其删除。在IE的开发工具中,它仍然有style="filter: ;"
  3. 在Opera中,它在加载一次后永远不会运行。换句话说,如果图像在浏览器缓存中,那么onload事件不会触发。
+0

您可能已经知道的事情:IE不支持CSS opacity; Opera可能会将其隐藏在自定义前缀后面,因为CSS不透明度仍在CSS3草稿中,而不是最终规范。我不知道JQuery是否试图模仿这些。 如果通过DX过滤器设置了不透明度,IE将禁用ClearType。 – EricLaw 2010-01-05 15:42:31

+0

jQuery克服了像这样的跨浏览器兼容性(这是使用它的主要原因之一) - Opera支持opacity就好了,在IE中使用了filter属性。至于ClearType,上面的代码是为了修复它在IE8中的错误,而不是7。 – DisgruntledGoat 2010-01-07 09:33:51

回答

0

感谢Opera社区,我找到了修复Opera中的错误的方法。我有这样的:

var imgLoad = new Image(); 
imgLoad.src = linkUrl; 
imgLoad.onload = function() { 
    //do some stuff here 
} 

然而,如果图像是在浏览器缓存它永远不会触发因为装载部分来自在onload函数之前。解决方法是将src作业移动到onload函数的下方:

var imgLoad = new Image(); 
imgLoad.onload = function() { 
    //do some stuff here 
} 
imgLoad.src = linkUrl; 
0

您是否尝试过在'中包装不透明度值,即$(something).animate({opacity:'1'});?每次为我工作。