【问题标题】:Javascript not firing when expectedJavascript未按预期触发
【发布时间】:2011-08-23 04:17:10
【问题描述】:

我有一个使用 javascript 将图像大小调整为最大宽度/高度的网站。我正在使用 javascript 而不是 CSS 来执行此操作,因此它向后兼容旧版浏览器。我的问题是,在 Chrome 中,它似乎并没有一直调整图像的大小。有时在第一次访问页面时图像不会调整大小,在重新加载和后续访问时会调整大小。

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

用户名/密码是 admin/pwd

【问题讨论】:

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

标签: javascript jquery


【解决方案1】:

你调用这个代码:

$(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);

这将在加载时调用调整大小,但如果图像已经加载,它仍然会调用调整大小。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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);
          });
        });
      });
      

      【讨论】:

        猜你喜欢
        • 2016-12-04
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-19
        相关资源
        最近更新 更多