1. 程式人生 > >Chrome和Safari瀏覽器jquery width()獲取不到高度的問題

Chrome和Safari瀏覽器jquery width()獲取不到高度的問題

問題概要 :

偶要遍歷一組圖片,遍歷時需要獲取其寬度,效果出來後,IE和Firefox都沒有問題,唯獨Chrome和Safari會出現獲取不到圖片寬度的情況。以往基本上是IE不相容,這下出現Chrome和Safari不相容了,倒覺得稀奇了,故寫出來分享下。

注:程式碼修改之前,直接用的$(ele).width()來取圖片的寬度。涉及程式碼:

  1. $(function(){
  2. ...//此處省略N行
  3. var w = $(this).width();
  4. ...//此處省略N行
  5. });

分析後得知,Chrome和Safari肯定是圖片還沒有完全載入進來,就去獲取圖片的寬度了,得其寬度為0,肯定就出錯了

解決辦法:

一、不要使用”$(document.ready(function(){…})”或其簡寫形式”$(function(){…}),使用$(window).load(function(){}); 程式碼改寫如下:

  1. $(window).load(function(){
  2. ...//此處省略N行
  3. var w = $(this).width();
  4. ...//此處省略N行
  5. });

二、使用Image物件和其onload方法

  1. $(function(){
  2. ...//此處省略N行
  3. var that = $(this);
  4. var img =newImage();
  5. img.src = $(this).attr("src");
  6. img.
    onload =function(){
  7. var w = img.width;
  8. }
  9. ...//此處省略N行
  10. });

最後囉嗦下,獲取高度,用$(ele).height()在Chrome和Safari下也會出現此問題。


出處: