jQuery获取图片尺寸为什么会有高度无宽度?

jq获取图片有高度没宽度。图片是控制台输出。
图片描述

页面地址是http://ao.acg.ac/?p=426,博客程序是wordpress。用于获取图片并限制其宽高的插件如下,控制台数据是这个插件输出的:

<?php
/*
Plugin Name: MMFix
Plugin URI: http://touko.host.smartgslb.com/
Description: 此插件用于修复Modern Metro主题的一系列错误。需和MM-Mod搭配使用。
Author: AozakiOrenji
Version: 0.1
*/
function loadJs(){
    wp_reset_query();
    if(is_single()){
        echo '
            <script src="./jquery.js"></script>
            <script>
                console.log("please wait");
                jQuery(".alignnone:not(.no-border)").each(function(){
                    var img = jQuery(this);
                    console.log("object found, height is " + img.height() + ", height limit is " + jQuery(window).height()*0.55 + ", width is " + img.width() + ", width limit is 500");
                    if(jQuery(this).height() > jQuery(window).height()*0.55){
                        console.log("height is larger than " + jQuery(window).height()*0.55 + ", operating");
                        jQuery(this).height(jQuery(window).height()*0.55);
                    }
                    if(jQuery(this).width() > 500){
                        console.log("width is larger than 500, operating");
                        jQuery(this).width(500);
                    }
                });
                console.log("done.");
            </script>
        ';
    }
}
add_action("get_footer","loadJS");
?>

所以为什么会这样呢。。。

阅读 3.4k
1 个回答

事实上,手工运行
jQuery(".alignnone:not(.no-border)").each(function(){console.log(jQuery(this).width());})
的结果:是能拿到的。

然而我打开你页面的时候,不仅宽度拿不到,高度也拿不到:
object found, height is 0, height limit is 358.6, width is 0, width limit is 500

这里有一个大问题,你的脚本在运行到var img = jQuery(this);var img = jQuery(this);`时,图片有开始加载吗?如果图片还未开始加载,那么宽高值就是0。

你需要在图片开始加载之后(只要开始加载文件头就行),才能运行获取图片信息的命令。
JQuery可参考:$(document).ready(function(){}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题