2010-12-22 138 views
2

由于某些原因,Firefox似乎忽略了我的scrollTo函数,即使它在Chrome和Safari浏览器中工作。scrollTo(jQuery)将无法在Firefox中工作

下面是一个例子链接:http://blog.rainbird.me/post/2358248459/blowholes-are-awesome

Chrome和Safari浏览器会自动滚动到图像的顶部(与20个像素的偏移量)

它不工作在Firefox。我很困惑!

代码:

$(document).ready(function() { 
$(".photoShell img").lazyload({ 
placeholder: "http://william.rainbird.me/boston-polaroid/white.gif", 
threshold: 200 
}); 


window.viewport = 
{ 
height: function() { 
return $(window).height(); 
}, 

width: function() { 
return $(window).width(); 
}, 

scrollTop: function() { 
return $(window).scrollTop(); 
}, 

scrollLeft: function() { 
return $(window).scrollLeft(); 
} 

}; 

$(".photoShell img").hide(); 
$(".photoShell .caption").hide(); 

$(".photoShell img").load(function() { 

var maxWidth = viewport.width() - 40; // Max width for the image 
if(maxWidth > 960){ 
    maxWidth = 960; 
} 
var maxHeight = viewport.height() - 50; // Max height for the image 
var ratio = 0; // Used for aspect ratio 
var width = $(this).width(); // Current image width 
var height = $(this).height(); // Current image height 

     // Check if the current width is larger than the max 
     if(width > maxWidth){ 
      ratio = maxWidth/width; // get ratio for scaling image 
      $(this).css("width", maxWidth); // Set new width 
      $(this).css("height", height * ratio); // Scale height based on ratio 
      height = height * ratio; // Reset height to match scaled image 
      width = width * ratio; // Reset width to match scaled image 

     } 

     // Check if current height is larger than max 
     if(height > maxHeight){ 
      ratio = maxHeight/height; // get ratio for scaling image 
      $(this).css("height", maxHeight); // Set new height 
      $(this).css("width", width * ratio); // Scale width based on ratio 
      width = width * ratio; // Reset width to match scaled image 
     } 


     $(this).parents('div.photoShell').css("width", $(this).width() + 22); 
     $(this).parents('div.photoShell').addClass('loaded'); 
     $(this).next(".caption").show(); 

     var scrollNum = $(this).parents('div.photoShell').offset().top; 
     $.scrollTo(scrollNum - 20, {duration: 700, axis:"y"}); 


      $(this).fadeIn("slow"); 


}).each(function() { 
    // trigger the load event in case the image has been cached by the browser 
    if(this.complete) $(this).trigger('load'); 
}); 
+0

好了,它适用于FF 3.6.12 – Shikiryu 2010-12-22 11:01:38

+0

它正在FF,清除浏览器的缓存,然后再试一次。 – ifaour 2010-12-22 11:03:54

回答

1

试试这个我不知道

scrollTop: function() { 
    return $(window).scrollTop(0); 
} 

与问候

瓦西姆

1

试试这个

scrollTop: function() { 
    return $(window).animate({ scrollTop: 0 }, "slow"); 
} 

与问候

瓦西姆