Toon posts:

[js] readyState doet het niet goed *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer al uren lang om een simpele functie te laten werken. Ik heb wat fotoboeken en als ik op een foto klik in een fotoboek wil ik die foto in een nieuw venster in grotere versie zien. Nu die grotere versie en dat nieuw venster zijn zo geen probleem, maar ik wil nu mijn venster op de zelfde grootte als de foto.

Hiervoor probeer ik dit:
Java:
1
2
3
4
5
6
7
var picture = new Image()
picture.src = which
while (picture.readyState != 'complete'){

}
picture_width = picture.width
picture_height = picture.height


Hierin is 'which' een parameter die meegegeven wordt bij het starten van het script en is zeker correct.

Het effect hiervan is bizar: foto's die hij nog nooit heeft moeten inladen daar crasht hij als het ware (IE vraagt na een tijd of het script gestopt moet worden). Nadat hij gecrasht is werkt die foto echter wel naar behoren. Dat is ook zo met foto's die hij reeds eens heeft ingeladen.

Het lijkt dus alsof hij nieuwe foto's niet aankan of zo. Waar zit mijn fout hier :? Ik heb al heel wat topics afgelezen maar niets bracht een oplossing.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Zet een onload op de body van de popup waarin je de functie aanroept, zet desnoods een onload op het plaatje zelf. Wat je nu doet kan niet, hij gaat loopen in die while waardoor IE vastloopt.

Als je toch die while-constructie met die readystate wil gebruiken zou je een ranzige timeout kunnen gebruiken ipv die while.

[ Voor 27% gewijzigd door André op 20-07-2004 14:57 ]


Verwijderd

Topicstarter
André schreef op 20 juli 2004 @ 14:54:
Zet een onload op de body van de popup waarin je de functie aanroept, zet desnoods een onload op het plaatje zelf. Wat je nu doet kan niet, hij gaat loopen in die while waardoor IE vastloopt.

Als je toch die while-constructie wil gebruiken zou je een ranzige timeout kunnen gebruiken ipv die while.
Probleem is dat de popup niet een echte window is maar een automatisch gegenereeerde DHTML-window...die onload kan ik dus nergens plaatsen. Waarom gaath het eigenlijk niet wat ik doe? Hij loopt toch voortdurend die loop af tot plots de readyState == 'complete' ?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Java is geen javascript, en javascript hoort nog altijd gewoon in Webdesign & Graphics :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Verwijderd schreef op 20 juli 2004 @ 14:58:
[...]

Probleem is dat de popup niet een echte window is maar een automatisch gegenereeerde DHTML-window...die onload kan ik dus nergens plaatsen.
Dan zet je toch een onload op de image: [img]"bla.gif"[/img]
Waarom gaath het eigenlijk niet wat ik doe? Hij loopt toch voortdurend die loop af tot plots de readyState == 'complete' ?
Omdat hij zo snel mogelijk die loop zo vaak mogelijk wil doen en daardoor loopt het systeem vast.

Verwijderd

plaatjes hebben ook een onload event

verdorie, Andre, ben je me weer voor :P

[ Voor 43% gewijzigd door Verwijderd op 20-07-2004 15:05 ]


Verwijderd

Topicstarter
maar wat moet daar dan komen in die onload, ik snap het nut niet echt :|

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Verwijderd schreef op 20 juli 2004 @ 15:07:
maar wat moet daar dan komen in die onload, ik snap het nut niet echt :|
Komtie, kant en klaar:

JavaScript:
1
2
3
4
5
function Bla()
{
  picture_width = picture.width 
  picture_height = picture.height
} 

HTML:
1
[img]"bla.gif"[/img]

Eventueel kun je die onload dynamisch aan je image plakken:

JavaScript:
1
2
3
4
5
6
7
plaatje = new Image()
plaatje.src = "bla.gif";
plaatje.onload = new function()
{
  picture_width = picture.width;
  picture_height = picture.height;
} 

[ Voor 36% gewijzigd door André op 20-07-2004 15:16 ]


Verwijderd

Topicstarter
André schreef op 20 juli 2004 @ 15:10:
[...]

Komtie, kant en klaar:

JavaScript:
1
2
3
4
5
function Bla()
{
  picture_width = picture.width 
  picture_height = picture.height
} 

HTML:
1
[img]"bla.gif"[/img]

Eventueel kun je die onload dynamisch aan je image plakken.
Net geprobeert maar doet het niet denk ik. Probleem is ook dat ik die hoogte en breedte moet hebben voor dat de image geladen wordt...Ik zou dus eigenlijk mijn code zodanig willen aanpassen dat tussen die image.src en de berekeningen een function komt te staan die gewoon niets doet tot de image geladen is.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:06

crisp

Devver

Pixelated

JavaScript:
1
2
3
4
5
6
7
8
9
10
var picture = new Image(); 
picture.src = which;
picture.onload = function() {
  var picture_width = this.width; 
  var picture_height = this.height;
  // doe er iets mee :)
}
picture.onerror = function() {
  // whatever
}


en misschien kan je ook eens kijken naar onreadystatechange() ;)

[ Voor 12% gewijzigd door crisp op 20-07-2004 16:18 ]

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 20 juli 2004 @ 16:17:
JavaScript:
1
2
3
4
5
6
7
8
9
10
var picture = new Image(); 
picture.src = which;
picture.onload = function() {
  var picture_width = this.width; 
  var picture_height = this.height;
  // doe er iets mee :)
}
picture.onerror = function() {
  // whatever
}


en misschien kan je ook eens kijken naar onreadystatechange() ;)
Met die code krijg ik het voor elkaar...om enkel de eerste keer de foto te tonen. Dus de 1e keer lukt het zoals het moet maar als ik dan mijn window sluit en opnieuw wil openen doet ie het niet meer
Pagina: 1