Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367

    dimensioni immagine onload

    Ciao a tutti,

    mi sono fatto delle funzioni per ridimensionare proporzionatamente delle immagini ma con IE ho dei problemi... ogni tanto delle immagini non appaiono perché l'oggetto immagine non ha valorizzato le dimensioni width e height... eppure io la funzione la chiamo all'onload dell'immagine
    codice:
    function proporzioni(x,y,xmax,ymax){
    	if(parseInt((ymax*x)/y)<xmax){
    		this.newY = ymax
    		this.newX = parseInt((ymax*x)/y)
    	}
    	else{
    		this.newX = xmax
    		this.newY = parseInt((xmax*y)/x)
    	}
    }
    var txtSRC='-'
    function AdattaImg(img,maxx,maxy){
    	if(txtSRC.indexOf(img.src)<0){
    		var xy = new proporzioni(img.width,img.height,maxx,maxy) //qua ogni tanto img.width o img.height valgono 0
    		var w = xy.newX
    		var h = xy.newY
    		img.width= w
    		img.height= h
    		txtSRC+=img.src
    	}
    }
    il controllo if(txtSRC.indexOf(img.src)<0){ l'ho messo perché altrimenti l'ultima immagine che si caricava andava in loop.
    Con Firefox funziona.
    Suggerimenti?
    Denghiuz

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ho risolto così
    codice:
    function AdattaImg(img,maxx,maxy){
    	img=document.images[img]
    	var xy = new proporzioni(img.width,img.height,maxx,maxy)
    	var w = xy.newX
    	var h = xy.newY
    	if(isNaN(w)||isNaN(h)){
    		setTimeout('AdattaImg(\''+img.name+'\','+maxx+','+maxy+')',50)
    	}
    	else{
    		img.width= w
    		img.height= h
    	}
    }
    il difetto è che l'immagine deve avere un nome univoco... infatti prima la richiamavo così
    codice:
    [img]immagine.gif[/img]
    passando direttamente l'immagine. Adesso mi serve il nome per richiamarla nel caso le dimensioni non siano ancora disponibili
    codice:
    [img]immagine.gif[/img]
    se la gif è animata la funzione viene chiamata ogni volta...
    se avete soluzioni alternative sono benaccette

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    risolverei se potessi richiamare nel setTimeout la funzione passando l'oggetto immagine.... ma come se fa?!?!?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da willybit
    risolverei se potessi richiamare nel setTimeout la funzione passando l'oggetto immagine.... ma come se fa?!?!?
    mi sono imbattuto in questo scritto ieri e, dato che interessa anche me, nel frattempo che mi studio la tua soluzione, volevo sapere se hai già risolto come richiamare la funzione AdattaImg con SetTimeout passandole i parametri, perchè questo lo so.
    Quello che non so invece è come richiamare un'immagine in un popup che si autoridimensiona.
    O per meglio dire, il codice che ho funziona ma qualche volta no (IE) e non so dove metterci le mani perchè mi sembra corretto. :master:

    Pietro

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da pietro09
    volevo sapere se hai già risolto come richiamare la funzione AdattaImg con SetTimeout passandole i parametri, perchè questo lo so.
    ajò pietro09! Visto che lo sai... lo dici anche a me?

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Per poter passare una variabile o un oggetto occorre che questo esista al momento dell'esecuzione, pertanto occorre creare una variabile pubblica ed associare la variabile o l'oggetto.

    Nel caso di un unico richiamo la soluzione e' semplice, mentre nel tuo caso conviene riferirsi ad un array:
    codice:
    var oggetti = new Array();
    function ...
    ...
    ...
    indice = oggetti.length;
    oggetti[indice] = img;
    setTimeout('AdattaImg(oggetti['+indice+'],'+maxx+','+maxy+')',50)
    ciao

    ps: attenzione agli apici...
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    grazie br1 ottima soluzione

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da willybit
    ajò pietro09! Visto che lo sai... lo dici anche a me?

    codice:
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <TITLE></TITLE>
    <SCRIPT LANGUAGE=javascript>
    <!--
    function lanciaAdattaImg(img)
    {
    	window.setTimeout(function(){AdattaImg(img)}, 5000);
    }
    function AdattaImg(img)
    {
    	alert(img.width + ", " + img.height);
    }
    
    
    //-->
    </SCRIPT>
    
    </HEAD>
    <BODY>
    
    [img]../images/anelli.bmp[/img]
    
    </BODY>
    </HTML>
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.