Javascript适用于Firefox,Chrome和Safari,但不适用于IE

时间:2012-03-28 03:06:39

标签: javascript jquery

正如标题所说。我有两个动画时钟,它们根本就没有在IE8中移动 我在这里缺少什么影响IE中的动画?

时钟:

(function(jQuery)
{
  jQuery.fn.clock = function(options)
  {
    var defaults = {
      offset: '+0',
      type: 'analog'
    };
    var _this = this;
    var opts = jQuery.extend(defaults, options);

    setInterval( function() {
      var seconds = jQuery.calcTime(opts.offset).getSeconds();
      if(opts.type=='analog')
      {
        var sdegree = seconds * 6;
        var srotate = "rotate(" + sdegree + "deg)";
        jQuery(_this).find(".sec").css({"-moz-transform" : srotate, "-webkit-transform" : srotate, "-ms-transform" : srotate});
      }
      else
      {
        jQuery(_this).find(".sec").html(seconds);
      }
    }, 1000 );

    setInterval( function() {
      var hours = jQuery.calcTime(opts.offset).getHours();
      var mins = jQuery.calcTime(opts.offset).getMinutes();
      if(opts.type=='analog')
      {
        var hdegree = hours * 30 + (mins / 2);
        var hrotate = "rotate(" + hdegree + "deg)";
        jQuery(_this).find(".hour").css({"-moz-transform" : hrotate, "-webkit-transform" : hrotate, "-ms-transform" : hrotate});
      }
      else
      {
        jQuery(_this).find(".hour").html(hours+':');
      }
      var meridiem = hours<12?'AM':'PM';
      jQuery(_this).find('.meridiem').html(meridiem);
    }, 1000 );

    setInterval( function() {
      var mins = jQuery.calcTime(opts.offset).getMinutes();
      if(opts.type=='analog')
      {
        var mdegree = mins * 6;
        var mrotate = "rotate(" + mdegree + "deg)";        
        jQuery(_this).find(".min").css({"-moz-transform" : mrotate, "-webkit-transform" : mrotate, "-ms-transform" : mrotate});                
      }
      else
      {
        jQuery(_this).find(".min").html(mins+':');
      }
    }, 1000 );
  }
})(jQuery);


jQuery.calcTime = function(offset) {
  d = new Date();
  utc = d.getTime() + (d.getTimezoneOffset() * 60000);
  nd = new Date(utc + (3600000*offset));
  return nd;
};

上面的代码是我在网上花了很多时间试图让兴奋剂在IE中正常工作后才能在网上找到的

如果有人能够纠正我的方式错误,那将非常感激。

仅编辑时钟动画问题

2 个答案:

答案 0 :(得分:1)

只讨论IE,它总是只是由于缺少某些内容或其他字符造成的,它看起来在鼠标悬停绑定后缺少一个分号:

$('.navlinks img').mouseover(function(){
    $(this).parent().find('img:first').stop().animate({opacity:1}, 1000);
});

答案 1 :(得分:1)

IE不支持transform属性(仅限IE9 +)。如果您正在使用IE 9,则可以添加此-ms-transform

.css({
 "-moz-transform" : mrotate, 
 "-webkit-transform" : mrotate,
 "-ms-transform" : mrotate
}); 

对于IE8来说有点复杂。你必须使用旋转矩阵,例如

 // convert to radian first
 var rad = Math.PI/180 * sdegree,
     cos = Math.cos(rad),
     sin = Math.sin(sin); 

'-ms-filter': "progid:DXImageTransform.Microsoft.Matrix(M11="+cos+", M12="+(-sin)+", M21="+sin+", M22="+cos+", SizingMethod='auto expand')";