jquery document.ready图像跨浏览器行为

jquery document.ready图像跨浏览器行为,jquery,cross-browser,Jquery,Cross Browser,因此,首先简要描述模型 <div> <img src="..."> </div> --在不同的浏览器中表现不同 FF正确获取图像的宽度,IE和Opera也是如此。 但是Safari说宽度是0px。Chrome在10个页面中的6个页面重新加载时失败。 我理解这种行为不是失败的,因为实际上在document.ready()中只加载DOM,而图像容器的维度仍然为零。但为什么行为会有所不同呢?在这件事上谁是对的 因此,我必须仅在加载图像时启动这些操作。 但是


因此,首先简要描述模型

<div>
    <img src="...">
</div>
--在不同的浏览器中表现不同

FF正确获取图像的宽度,IE和Opera也是如此。
但是Safari说
宽度是
0px
。Chrome在10个页面中的6个页面重新加载时失败。

我理解这种行为不是失败的,因为实际上在document.ready()中只加载DOM,而图像容器的维度仍然为零。但为什么行为会有所不同呢?在这件事上谁是对的

因此,我必须仅在加载图像时启动这些操作。
但是,如果我有几个这样的
s,我如何检查所有图像(此类)是否已加载?
或者这里最好的方法就是使用
$(窗口)

-fiddle没有显示真正的问题,因为输出页面会在
窗口上触发结果。加载
。因此,在这里您可以看到主要思想。
我找不到任何免费的主机来放置纯HTML-顺便说一句,有这样简单的服务吗
所以只是在这里粘贴代码--在这里

<!doctype html>
<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <style type="text/css">
            div {
                position: relative;
                float: left;
                border: 1px solid;
            }
            img {
                display: block;
            }
        </style>
    </head>

    <body>
        <p></p>
        <div>
            <img src="http://fb.ru/misc/i/gallery/10881/25071.jpg"/>
        </div>
        <script type="text/javascript">
            $(document).ready(function(){
                var Img = $('img');
                $('p').html(
                    Img[0].tagName+ ': ' + 
                    Img.css('width')+' * '+
                    Img.css('height')
                );
                $('div').animate({'left': parseInt(Img.css('width'))-200}, 2000);
            })
        </script>
    </body>
</html>

div{
位置:相对位置;
浮动:左;
边框:1px实心;
}
img{
显示:块;
}

$(文档).ready(函数(){ 变量Img=$('Img'); $('p').html( Img[0]。标记名+':'+ Img.css('width')+'*'+ Img.css(‘高度’) ); $('div').animate({'left':parseInt(Img.css('width'))-200},2000); })
您无法获取尚未加载的图像的宽度。你有两个选择。使用窗口onload事件,或对每个图像使用onload事件

$(window).on('load',function(){
    var Img = $('img');
    $('p').html(
        Img[0].tagName+ ': ' + 
        Img.css('width')+' * '+
        Img.css('height')
    );
    $('div').animate({'left': parseInt(Img.css('width'))-200}, 2000);
})

在不同的浏览器中反复尝试,您可能会在第一次尝试时看到与后续尝试不同的行为。对于fiddle,您可以通过在正文中将下拉列表从onload更改为nowrap来在fiddle中重新创建它。可能有帮助吗?或者您可以通过javascript加载图像,并使用.load()事件侦听器
。on('load'
更合适,因为
.load()
是ajax帮助程序,而不是加载事件。对于未缓存的图像,FF看起来也不会返回准确大小的图像;请在那里检查:
ctrl+F5
以刷新和清除缓存
$(window).on('load',function(){
    var Img = $('img');
    $('p').html(
        Img[0].tagName+ ': ' + 
        Img.css('width')+' * '+
        Img.css('height')
    );
    $('div').animate({'left': parseInt(Img.css('width'))-200}, 2000);
})