2009-11-16 27 views
12

$('img').height()はクロムに0を返しますが、IEとFirefoxでは実際の高さを返します。クロムの問題でjqueryを使用した画像の高さ

実際のクローム画像の高さを取得する方法は何ですか?

+0

'height 'は' img'タグそのものに指定されていますかCSSにありますか? –

+0

は表示されている、つまり表示されていますか? –

+6

'$(document).ready'ではなく、' $(window).load'で処理します。私のために働いた - http://www.fortwaynewebdevelopment.com/jquery-width-or-height-always-returns-0-fix/ – jibiel

答えて

1

私の前提は、イメージのロードが完了する前にこの関数が呼び出されていることです。これが実際にそうであるかどうかを確認するために関数に遅延を入れてみることができますか?このような場合は、関数を実行する前にタイマーを使用して不正行為を行うことができます。

イメージがロードされたときに検出するのが少し複雑です。 Have a look at this script for some ideas - 多分それはあなたのために働くでしょう。

+0

または、ドキュメント準備完了イベントではなく、本体onloadイベントでスクリプトを実行します。ドキュメント全体がロードされなければならないので、正確ではありませんが、イメージがロードされたことを確認できます(コード内のイメージで、AJAXがロードされたものではないと仮定します)。 –

+2

@Frankでは、DOMの作成が完了したときにbody onloadが呼び出されますが、DOM内のアセットが読み込みを完了することは保証されていません(画像が含まれています)。 – JasonWyatt

9

Joshが述べたように、イメージがまだ完全にロードされていない場合、jQueryは次元がまだわからないでしょう。あなたが唯一のイメージが完全にロードされた後、それは次元のアクセスしようとしていることを確認するために、このような何かを試してみてください:私が使用

var img = new Image(); 

$(img).load(function() { 
    //-- you can determine the height before adding to the DOM 
    alert("height: " + img.height); 
    //-- or you can add it first... 
    $('body').append(img); 
    //-- and then check 
    alert($('body img').height()); 
}).error(function() { 
    //-- this will fire if the URL is invalid, or some other loading error occurs 
    alert("DANGER!... DANGER!..."); 
}); 

$(img).attr('src', "http://sstatic.net/so/img/logo.png"); 
1

少し醜いだが効果的な修正は私の場合は、PHPには、バックエンドの言語を使用しました、高さを取得し、画像に設定してからブラウザに送信します。

それは醜いですが、簡単かつ迅速

1

は、画像をプリロードし、コールバック関数を設定し、あなたが探しているものかもしれません:

// simple image preloader 
function getHeight(el,fn) { 
    var img = new Image(); 
    img.onload = function() { fn(img.height); }; 
    img.src = el.attr("src"); 
} 

$("img").each(function(){ 
    getHeight($(this),function(h){ 
     // what you need to do with the height value here 
     alert(h); 
    }); 
}); 
-1

ちょうど同じ問題を持っていた:幅を設定し、高さをCSSまたはHTMLで事前に設定します。あなたはちょうど私が正しいイメージの高さを取得

this.height; 

を、昔ながらのJSを使用している場合しかし -

0

はちょうど私が

$(this).height(); 
その戻り値0を見つけたこれでいくつかの実験を行っています。

関連する問題