[JS / IE] Popup window pakt niet juiste foto afmetingen*

Pagina: 1
Acties:

  • visboer32
  • Registratie: December 2001
  • Laatst online: 03-02 14:41
Hallo,

Ik ben momenteel met een vrij simpel javascript bezig om een fotoalbum te maken
voor een website. De bedoeling is dat je op kleine miniatuurweergaven van foto's klikt en dan
een grotere versie in een nieuw venster te zien krijgt waarbij het venster automatisch de vorm van de
afbeelding aanneemt.

Nu werkt dit geheel bij mijn pc perfect onder Firefox, maar als ik IE ga gebruiken dan werken de grotere foto's niet optimaal. Ze verschijnen wel, maar het venster van IE is te klein (past zich niet goed aan het formaat van de foto aan, het lijkt hierbij alleen om de breedte te gaan, hoogte is wel goed) waardoor je een deel van de foto niet goed ziet.

Heeft iemand een oplossing voor dit probleem?
Alvast bedankt.

Hier nog de code om het wat duidelijker te maken:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
<script language="Javascript" type="text/javascript" >
//aan te passen
vanaf_links = 100;
vanaf_boven = 100;
grootste_breedte  = 500+20;//afmetingen van het grootste beeld +20
grootste_hoogte = 500+20;  //afmetingen van het grootste beeld +20
//hieronder niets wijzigen
if (parseInt(navigator.appVersion.charAt(0))>=4){
var isNN=(navigator.appName=="Netscape")?1:0;
var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}
var optNN='scrollbars=no,width='+grootste_breedte+',height='+grootste_hoogte+',left='+vanaf_links+',top='+vanaf_boven;
var optIE='scrollbars=no,width=150,height=100,left='+vanaf_links+',top='+vanaf_boven;
function popBeeld(BeeldURL,BeeldTitel){
if (isNN){imgWin=window.open('about:blank','',optNN);}
if (isIE){imgWin=window.open('about:blank','',optIE);}
with (imgWin.document){
writeln('<html><head><title>Bezig met inladen ...</title><style>body{margin:0px;}</style>');writeln('<sc'+'ript>');
writeln('var isNN,isIE;');writeln('if (parseInt(navigator.appVersion.charAt(0))>=4){');
writeln('isNN=(navigator.appName=="Netscape")?1:0;');writeln('isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}');
writeln('function aanpassen_aan_beeldgrootte(){');writeln('if (isIE){');writeln('window.resizeTo(100,100);');
writeln('width=100-(document.body.clientWidth-document.images[0].width);');
writeln('height=100-(document.body.clientHeight-document.images[0].height);');
writeln('window.resizeTo(width,height);}');writeln('if (isNN){');       
writeln('window.innerWidth=document.images["BeeldNaam"].width;');writeln('window.innerHeight=document.images["BeeldNaam"].height;}}');
writeln('function maak_titel(){document.title="'+BeeldTitel+'";}');writeln('</sc'+'ript>');
writeln('</head><body bgcolor=000000 scroll="no" onload="aanpassen_aan_beeldgrootte();maak_titel();self.focus()" onblur="self.close()">');
writeln('<img name="BeeldNaam" src='+BeeldURL+' style="display:block"></body></html>');
close(); 
}}
</script>

[ Voor 56% gewijzigd door visboer32 op 15-08-2007 14:41 ]

AMD Ryzen 7 5800X | Gigabyte Aorus X570 Pro | 32GB DDR4-3600 CL16 | Gigabyte RTX3080 Gaming OC | Samsung 970 & 960 Evo | Be Quiet 500DX | Samsung 49" Ultrawide LC49HG90 | Fanatec DD1 + Ferrari 488 & Audi R8 wheel | SRP GT pedals | Simetik K2 + Buttkicker


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Link doet het niet en Java != JavaScript. ;)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • visboer32
  • Registratie: December 2001
  • Laatst online: 03-02 14:41
zwippie schreef op woensdag 15 augustus 2007 @ 13:39:
Link doet het niet en Java != JavaScript. ;)
Je hebt gelijk, als het goed is doet de link het nu wel... :)

AMD Ryzen 7 5800X | Gigabyte Aorus X570 Pro | 32GB DDR4-3600 CL16 | Gigabyte RTX3080 Gaming OC | Samsung 970 & 960 Evo | Be Quiet 500DX | Samsung 49" Ultrawide LC49HG90 | Fanatec DD1 + Ferrari 488 & Audi R8 wheel | SRP GT pedals | Simetik K2 + Buttkicker


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Kijk eerst eens even naar je JS errors omtrent je variabele va5naf_links ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • visboer32
  • Registratie: December 2001
  • Laatst online: 03-02 14:41
BtM909 schreef op woensdag 15 augustus 2007 @ 13:46:
Kijk eerst eens even naar je JS errors omtrent je variabele va5naf_links ;)
Ik krijg hier helemaal geen JS errors... ? :P

AMD Ryzen 7 5800X | Gigabyte Aorus X570 Pro | 32GB DDR4-3600 CL16 | Gigabyte RTX3080 Gaming OC | Samsung 970 & 960 Evo | Be Quiet 500DX | Samsung 49" Ultrawide LC49HG90 | Fanatec DD1 + Ferrari 488 & Audi R8 wheel | SRP GT pedals | Simetik K2 + Buttkicker


Verwijderd

visboer32 schreef op woensdag 15 augustus 2007 @ 13:51:
[...]


Ik krijg hier helemaal geen JS errors... ? :P
Regel 16 ;)

  • visboer32
  • Registratie: December 2001
  • Laatst online: 03-02 14:41
Ok die fout is eruit, maar het oorspronkelijke probleem blijft bestaan... ?

AMD Ryzen 7 5800X | Gigabyte Aorus X570 Pro | 32GB DDR4-3600 CL16 | Gigabyte RTX3080 Gaming OC | Samsung 970 & 960 Evo | Be Quiet 500DX | Samsung 49" Ultrawide LC49HG90 | Fanatec DD1 + Ferrari 488 & Audi R8 wheel | SRP GT pedals | Simetik K2 + Buttkicker


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Misschien eens handig om eens te leren debuggen. Kom met een concrete testcase + relevante code. Niet al je code neerplempen om het voor ons makkelijker te maken :)

We verwachten dus ook gewoon meer zelfinzet van jou.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • visboer32
  • Registratie: December 2001
  • Laatst online: 03-02 14:41
BtM909 schreef op woensdag 15 augustus 2007 @ 14:23:
Misschien eens handig om eens te leren debuggen. Kom met een concrete testcase + relevante code. Niet al je code neerplempen om het voor ons makkelijker te maken :)

We verwachten dus ook gewoon meer zelfinzet van jou.
Ik probeer heus zelf wel iets aan het probleem te doen... ik ben alleen nou eenmaal niet zo'n kei in javascript en ik d8 dat dit misschien een vrij kleine foutje zou zijn wat door iemand makkelijk gespot zou worden. Ik kan wel hier proberen een stuk code weg te laten, maar de kans is dan alleen maar groot dat ik net een belangrijk stukje weg ga laten.

Als ik naar de code kijk dan snap ik niet in welke regels dit probleem zich zou kunnen voordoen. Ik heb al allerlei kleine aanpassingen geprobeert (andere breedtes en hoogten) in de 'optIE' regel (regel 12) maar dit mag niet baten. Het punt is dat het venster op de een of andere manier in IE in de breedte kleiner wordt gemaakt dan dat de foto is. Dit gebeurd ook als ik bijvoorbeeld voor de test eens een zeer kleine foto neem, zelfs deze wordt half afgebroken, IE houdt dus niet een maximum breedte aan waardoor eventuele grote foto's een stukje buiten beeld vallen.

AMD Ryzen 7 5800X | Gigabyte Aorus X570 Pro | 32GB DDR4-3600 CL16 | Gigabyte RTX3080 Gaming OC | Samsung 970 & 960 Evo | Be Quiet 500DX | Samsung 49" Ultrawide LC49HG90 | Fanatec DD1 + Ferrari 488 & Audi R8 wheel | SRP GT pedals | Simetik K2 + Buttkicker


  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
JavaScript:
1
2
3
4
writeln('function aanpassen_aan_beeldgrootte(){');writeln('if (isIE){');writeln('window.resizeTo(100,100);');
writeln('width=100-(document.body.clientWidth-document.images[0].width);');
writeln('height=100-(document.body.clientHeight-document.images[0].height);');
writeln('window.resizeTo(width,height);}');

wordt dus uitgepoept als:
JavaScript:
1
2
3
4
5
6
7
8
function aanpassen_aan_beeldgrootte() {
  if (isIE) {
    window.resizeTo(100,100);
    width=100-(document.body.clientWidth-document.images[0].width);
    height=100-(document.body.clientHeight-document.images[0].height);
    window.resizeTo(width,height);
  }
[...]

Misschien ligt het aan mij maar deze berekening snap ik niet... de uiteindelijke breedte moet gelijk zijn aan 100 minus het resultaat van de huidige breedte (net ingesteld op 100) minus de breedte van de afbeelding? Dus stel de afbeelding is 500 pixels breed, dan staat er dus width=100-(100-500);

Dit heeft niks met programmeren te maken maar meer met wiskunde:
100-(100-500)=100- -400=100+400=500... :?

De uitkomst is dus per definitie de breedte van het plaatje waar je mee begon 8)7 (er staat 2x 500 in de berekening). En in de stijl van het niet allemaal voorkauwen laat ik het hierbij :+

  • .Alex
  • Registratie: Augustus 2005
  • Laatst online: 01-08-2022
Heeft de popup misschien padding of margins?
Pagina: 1