【问题标题】:Why is the attribute 'naturalWidth' not always returned on a background image in JS?为什么在 JS 中的背景图像上并不总是返回属性“naturalWidth”?
【发布时间】:2015-11-06 01:06:37
【问题描述】:

我有一个如下所示的脚本:

$(function(){
    var backgroundImg = document.querySelector(".image-selector");

    var bmyObject = {
        backImgNaturalWidth : backgroundImg.naturalWidth,
        /*
            Rest of the object that is okay
        */
    };

    /*Rest of my script*/
}

问题是,有时自然宽度被正确采用,有时它是 0,这会破坏脚本的其余部分,这些脚本会涉及这个数字进行计算。任何关于为什么会发生这种情况或如何解决的想法都会很棒。

【问题讨论】:

  • 如上所述,所以改用$(window).on('load', function(){...});
  • 谢谢大家,是的 - 我刚刚准备好 DOM,当我还需要使用 $(window).load() 来访问图像时。感谢帮助。 Ramanlfc - 并非真正重复(目标相同,但问题和解决方案路径不同)。 :)

标签: javascript jquery html


【解决方案1】:

对于那些将通过搜索此问题的答案来的人: 而不是文档准备好,您需要收听窗口加载,因为当 DOM 准备好时会触发文档就绪,而当 DOM、图像等准备好时会触发窗口加载。 所以修改后的代码如下所示:

$(window).load(function(){
    var backgroundImg = document.querySelector(".image-selector");

    var bmyObject = {
        backImgNaturalWidth : backgroundImg.naturalWidth,
        /*
            Rest of the object that is okay
        */
    };

    /*Rest of my script*/
});

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2022-01-24
    • 2019-12-31
    • 2016-10-25
    相关资源
    最近更新 更多