Autor | Zpráva | ||
---|---|---|---|
Dancek Profil * |
#1 · Zasláno: 16. 3. 2011, 11:59:36
Dobrý den,
mám problém při vykonání funkce v nově otevřeném okně pomocí funkce window.open. Problém je následující. Po kliknutí na obrázek by se mělo otevřít nové okno do, kterého by se měl zapsat odkaz na javascript <script src="admin/aspect_ratio.js" type="text/javascript" charset="utf-8"></script> <table><tr><td><img ...></td></tr></table> funkce pro otevření nového okna s obrázkem: <img onClick="start_up('core/435666.jpg,core/952833.jpg,core/759378.jpg,core/123200.jpg','500;535,1024;768,1024;768,1024;768','core/435666.jpg');" class="xsmall" src="core/435666.jpg" alt="core/435666.jpg" border="0" onLoad="aspect_ratio(this,'big');"> function start_up(paths,resolution,now){ w = window.open('','Fotogalery','height=500px, width=500px, scrollbars=no, resizable=no'); w.document.close(); w.document.write('<html>'); w.document.write('<head>'); w.document.write('<link rel="stylesheet" href="admin/style.css" type="text/css">'); w.document.write('<script src="admin/aspect_ratio.js" type="text/javascript" charset="utf-8"></script>'); w.document.write('</head>'); w.document.write('<body>'); w.document.write('<center>'); w.document.write('<img src="'+now+'" style="visibility: hidden;" onLoad="aspect_ratio(this,\'gal_small\');">'); w.document.write('<table border="1" width="300px;">'); w.document.write('<tr>'); w.document.write('<td>'); w.document.write('<img src="'+now+'" style="visibility: hidden;" onLoad="aspect_ratio(this,\'gal_small\');">'); w.document.write('</td>'); w.document.write('</tr>'); w.document.write('<tr>'); w.document.write('<td>'); w.document.write('<img src="'+now+'" style="visibility: hidden;" onLoad="aspect_ratio(this,\'gal_small\');">'); w.document.write('</td>'); w.document.write('</tr>'); w.document.write('</table>'); w.document.write('</center>'); w.document.write('</body>'); w.document.write('</html>');} funkce pro změnšení obrázků: /*aspect ratio*/ function aspect_ratio(image, size){ if(size == 'small'){var get_width = 128; var get_height = 96;} else if(size == 'xsmall'){var get_width = 42; var get_height = 32;} else if(size == 'big'){var get_width = 170; var get_height = 170;} else if(size == 'gal_big'){var get_width = 400; var get_height = 250;} else if(size == 'gal_small'){var get_width = 100; var get_height = 100;} else{return false;} var aspect_ratio_w = image.offsetWidth/image.offsetHeight; var aspect_ratio_h = image.offsetHeight/image.offsetWidth; if(image.height > get_height){ image.height = get_height; image.width = get_height/aspect_ratio_h; image.style.visibility='visible';} else{null;} if(image.width > get_width){ image.width = get_width; image.height = get_width/aspect_ratio_w; image.style.visibility='visible';} else{null;}} V případě, že by někoho napadlo se mě ptát proč jsem použil tolikrát w.document.write(*) tak důvodem je pouze lepší orientace při psaní v PSPadu. (při zápisu pouze s jedním w.document.write(*) se problém nevyřešil) IE ani firefox mi nehlásí žádnou chybu v javascriptu. Praktická ukázka je zde: http://shop.matraux.com/?prid=879967 |
||
_es Profil |
#2 · Zasláno: 16. 3. 2011, 12:24:27 · Upravil/a: _es
Dancek:
„Funkce má za úkol zmenšit obrázek do požadovaného rozměru a zachovat poměr stran obrázku.“ Na to by malo stačiť nastavovať len šírku (alebo len výšku), netreba nastavovať oba rozmery. w.document.close(); patrí až za posledné použitie metódy write .
|
||
Dancek Profil * |
#3 · Zasláno: 16. 3. 2011, 15:15:33
Na to by malo stačiť nastavovať len šírku (alebo len výšku), netreba nastavovať oba rozmery.
Určitě nestačilo. Jakmile uživatel nahraje obrázek o výšce třeba 800px tabulka se pak natáhne (což nechci), případně pokud bude obrázek 800px vysoký a 100px široký tak by se taky mohlo stát že při nastavené pevné velikosti např. 200px šířka by se obrázek natáhl na 1600px na výšku a 200px na šířku. w.document.close(); patrí až za posledné použitie metódy write. děkuju za radu, opravil jsem si to hned =) nicméně to neřeší problém v IE. |
||
_es Profil |
#4 · Zasláno: 16. 3. 2011, 15:28:15
Dancek:
Nerozumiem, na čo sú tam použité vlastnosti offsetWidth a offsetHeight , to môže robiť problémy.
Predsa úplne stačia vlastnosti width a height .
|
||
Dancek Profil * |
#5 · Zasláno: 17. 3. 2011, 00:38:44
var aspect_ratio_w = image.offsetWidth/image.offsetHeight; var aspect_ratio_h = image.offsetHeight/image.offsetWidth; změněno na: var aspect_ratio_w = image.width/image.height; var aspect_ratio_h = image.height/image.width; Bohužel to ale neřeší problém v IE. |
||
Časová prodleva: 13 let
|
0