Obtenir la largeur la hauteur de la distance de l'image à partir de l'url
Donc l'alerte donne pas défini de valeurs pour la largeur et la hauteur. Je pense que les valeurs w et h de l'image de l'img.onload de calcul n'est pas transmis les valeurs de retour, ou il peut être de retour w et h avant le onload calcule eux:
function getMeta(url){
var w; var h;
var img=new Image;
img.src=url;
img.onload=function(){w=this.width; h=this.height;};
return {w:w,h:h}
}
//"http://snook.ca/files/mootools_83_snookca.png" //1024x678
//"http://shijitht.files.wordpress.com/2010/08/github.png" //128x128
var end = getMeta("http://shijitht.files.wordpress.com/2010/08/github.png");
var w = end.w;
var h = end.h;
alert(w+'width'+h+'height');
Comment puis-je avoir l'alerte montrer la bonne largeur et la hauteur?
- La raison pour laquelle il n'est pas le travail, c'est parce que au moment où vous
return
votre largeur et la hauteur des valeurs qu'ils ne sont pas encore connues. Vous avez besoin pour faire face à la résultat à l'intérieur de laonload
de rappel. Vous devriez probablement faire de la fonction de rappel d'un second argument à votregetMeta
fonction.
Vous devez vous connecter pour publier un commentaire.
Obtenir la taille de l'image avec jQuery
Obtenir la taille de l'image avec JavaScript
Obtenir la taille de l'image avec JavaScript (navigateurs modernes, IE9+ )
Utiliser le ci-dessus que:
getMeta( "http://example.com/img.jpg" );
https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement
.load
fonction --- ou un setInterval, cause alors que votre code est lue et exécutée, l'image est toujours en cours de chargement: Intervalle de vérifier avant que l'image est chargée et claire elle-même, comme dans cette démo: jsfiddle.net/roXon/SN2t6/1Passer juste un rappel comme argument comme ceci:
JS:
La
w
eth
variables dansimg.onload
la fonction ne sont pas dans le même champ avec ceux de lagetMeta()
fonction. Une façon de le faire, est comme suit:Violon: http://jsfiddle.net/ppanagi/28UES/2/
ES6: à l'Aide de
async/await
vous pouvez le faire ci-dessousgetMeta
en fonction de la séquence de façon semblable et vous pouvez l'utiliser comme suit (ce qui est presque identique à code dans votre question (je ajouterawait
mot-clé et le changement de variableend
àimg
, et le changementvar
àlet
mot-clé). Vous devez exécutergetMeta
parawait
seulement à partir deasync
fonction (exécuter).JS:
HTML: