Dato che il codice è "un buon codice" e dato che mi è servito, vorrei proporre alcune modifiche dato che ho avuto qualche problema.
1) se si usa IE6 in strict mode, ossia con la direttiva:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
mi pare che non funzioni
2) se si usano foto grandi, la dimensione del popup eccede le diminsioni dello schermo: ad esempio io vedo una immagine con sfondo celeste (angolo superiore sinistro di una fotografia
)
io ho risolto (almeno credo :master: ) sostituendo la funzione PopupPic con la funzione CaricaFoto
codice:
function PopupPic(sPicURL)
{
w_2 = window.open( "popup.asp?" + sPicURL, "popup", "resizable=1, height=200,width=200");
}
var w_2 = null;
function CaricaFoto(foto1)
{
if (w_2 != null && w_2.open) w_2.close();
w_2 = window.open("", "popup", "width=200px,height=200px,top=0px,left=0px,resizable=yes,scrollbars=no");
d = w_2.document;
d.writeln("<h"+"tml>");
d.writeln("<h"+"ead>");
d.writeln("<t"+"itle>" + foto1 + "</t"+"itle>");
d.writeln( "<scrip" + "t language='javascript' type='text/javascript'>function ridimensiona(){window.setTimeout(function() {onsetTimeoutRidimensiona();}, 300);}function onsetTimeoutRidimensiona(){var foto1 = document.getElementById('im1');var maxW = screen.width - 70;var maxH = screen.height - 100;var fattoreW, fattoreH, oldW, oldH, newW, newH;oldW = foto1.width;oldH = foto1.height;fattoreW = maxW / oldW;fattoreH = maxH / oldH;if(fattoreW >= fattoreH){ newW = oldW * fattoreH; newH = oldH * fattoreH; } else { newW = oldW * fattoreW; newH = oldH * fattoreW; } if(newW < foto1.width) {foto1.width = newW;} var w, h;if (self.innerHeight) /* all except Explorer */{w = self.innerWidth;h = self.innerHeight;}else if (document.documentElement && document.documentElement.clientHeight)/*Explorer 6 Strict Mode*/{w = document.documentElement.clientWidth;h = document.documentElement.clientHeight;}else if (document.body) /* other Explorers*/{w = document.body.clientWidth;h = document.body.clientHeight;}window.resizeBy(foto1.width - w, foto1.height - h); } </scrip" + "t>");
d.writeln( "</h"+"ead>" );
d.writeln( "<b"+"ody topmargin='0' leftmargin='0' scroll='no' style='margin:0;overflow: hidden'>" );
d.writeln( "[img]" + foto1 + "[/img]" ) ;
d.writeln( "</b"+"ody>" );
d.writeln( "</h"+"tml>" );
d.close();
w_2.focus();
}
function window_onunload()
{
if (w_2 != null && w_2.open) w_2.close();
}
come si vede dal codice, non è necessaria una pagina ausiliaria.
Le dimensioni del popup non eccedono le dimensioni dello schermo
Se si vuole, si può contenere le dimensioni dell'immagine, modificando il src dell'img, ossia, sostituisco:
d.writeln( "<img alt='' src='" + foto1 + "'... con
d.writeln( "<img alt='' src='img1.aspx?img=" + foto1 + "&tic=" + (new Date()).valueOf() + "'