亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Javascript / jQuery確定是否已加載圖像?

如何使用Javascript / jQuery確定是否已加載圖像?

ibeautiful 2019-10-26 11:17:14
我正在編寫一些Javascript來調整大圖像的大小,以適合用戶的瀏覽器窗口。(不幸的是,我沒有控制源圖像的大小。)因此,HTML中將包含以下內容:<img id="photo"     src="a_really_big_file.jpg"     alt="this is some alt text"     title="this is some title text" />我是否可以確定標簽中的src圖像img是否已下載?我需要這樣做,因為如果$(document).ready()在瀏覽器加載圖像之前執行該命令,就會遇到問題。  $("#photo").width()并$("#photo").height()返回占位符的大?。ㄌ娲谋荆?。就我而言,這大約是134 x 20?,F在,我只是在檢查照片的高度是否小于150,并假設是alt文字。但這是一個很不錯的技巧,如果照片的高度小于150像素(在我的特定情況下不太可能),或者替換文字的高度大于150像素(可能發生在小的瀏覽器窗口中),它就會中斷。編輯:對于任何想要查看代碼的人:$(function(){  var REAL_WIDTH = $("#photo").width();  var REAL_HEIGHT = $("#photo").height();  $(window).resize(adjust_photo_size);  adjust_photo_size();  function adjust_photo_size()  {    if(REAL_HEIGHT < 150)    {      REAL_WIDTH = $("#photo").width();      REAL_HEIGHT = $("#photo").height();      if(REAL_HEIGHT < 150)      {        //image not loaded.. try again in a quarter-second        setTimeout(adjust_photo_size, 250);        return;      }    }    var new_width = . . . ;    var new_height = . . . ;    $("#photo").width(Math.round(new_width));    $("#photo").height(Math.round(new_height));  }});更新:感謝您的建議。如果我為$("#photo").load事件設置回調,則可能會引發該事件,因此我直接在image標簽上定義了onLoad事件。作為記錄,下面是我最終使用的代碼:<img id="photo"     onload="photoLoaded();"     src="a_really_big_file.jpg"     alt="this is some alt text"     title="this is some title text" />然后在Javascript中://This must be outside $() because it may get called firstvar isPhotoLoaded = false;function photoLoaded(){  isPhotoLoaded = true;}$(function(){  //Hides scrollbars, so we can resize properly.  Set with JS instead of  //  CSS so that page doesn't break with JS disabled.  $("body").css("overflow", "hidden");  var REAL_WIDTH = -1;  var REAL_HEIGHT = -1;  $(window).resize(adjust_photo_size);  adjust_photo_size();  function adjust_photo_size()  {    if(!isPhotoLoaded)    {      //image not loaded.. try again in a quarter-second      setTimeout(adjust_photo_size, 250);      return;    }  }});
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

使用jQuery數據存儲,您可以定義“已加載”狀態。


<img id="myimage" onload="$(this).data('loaded', 'loaded');" src="lolcats.jpg" />

然后在其他地方您可以執行以下操作:


if ($('#myimage').data('loaded')) {

    // loaded, so do stuff

}


查看完整回答
反對 回復 2019-10-26
  • 3 回答
  • 0 關注
  • 532 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號