2011-08-22 39 views
0

我有一个网站使用javascript将图像大小调整为最大宽度/高度。我使用JavaScript而不是CSS来做到这一点,所以它与旧版浏览器向后兼容。我的问题是,在Chrome中,似乎并不是一直在调整图像大小。有时在第一次访问页面时,图像不会调整大小,重新加载和随后的访问都会调整大小。Javascript没有在预期时发射

http://justinzaun.com/Tree/people/@[email protected]对于示例页面,但实际上网站上的任何人员页面都可以显示相同的问题。我试图在$(window).load()和$(documnet).ready()中调整大小,这发生在familytree.js文件中。

的用户名/密码是admin /密码

+0

@David - 我提供了用户名和密码 – Justin808

回答

0

你把这个代码:

$(this).find("img").load(function() { resize($(this)); }); 

如果图像已加载哪些什么都不做。

使用这个代替:

var $img = $(this).find("img"); 
$img.load(function() { resize($(this)); }); 
// If image is already loaded then it will have a height 
if($img.height()) 
    resize($img); 

,将调用调整负荷,但如果图像已被加载,它会调用反正调整。

+0

这个作品,谢谢! – Justin808

0

这可能是WebKit bug 45586,您的代码不知道图像的大小。通常,beforeload处理程序正在通过Adblock或Adblock Plus等扩展进行注册。

0

您正在侦听window.onload触发后的图像加载事件,这意味着应该已加载所有图像。尝试类似:

$(function() { 
    // on DOM ready 
    $('img').each(function() { 
    var $img = $(this); 
    (this.width && this.height) ? resize($img) : $img.load(function() { 
     // timeout to prevent webkit bug 45586 
     window.setTimeout((function($img) { 
     return function() { 
      resize($img); 
     }; 
     }($img)),2); 
    }); 
    }); 
});