Toon posts:

[JavaScript] Vreemde window.open perikelen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb voor een site http://wwww.strakkehert.nl/ een aantal foto's online gezet. Als je op een foto klikt, moet deze in een nieuw venster geopend worden. Nu heb ik een scriptje gevonden en af en toe doet ie het wel, dan weer niet. Af en toe wel een pop-up en dan weer gewoon in het bestaande venster. Ik snap er echt niks meer van.
code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<SCRIPT Language="JavaScript">
<!--

var popWin = null    // use this when referring to pop-up window
var winCount = 0
var winName = "popWin"
function openPopWin(winURL, winWidth, winHeight, winFeatures, winLeft, winTop){
  var d_winLeft = 20  // default, pixels from screen left to window left
  var d_winTop = 20   // default, pixels from screen top to window top
  winName = "popWin" + winCount++ //unique name for each pop-up window
  // closePopWin()       // close any previously opened pop-up window
  if (openPopWin.arguments.length >= 4)  // any additional features? 
    winFeatures = "," + winFeatures
  else 
    winFeatures = "" 
  if (openPopWin.arguments.length == 6)  // location specified
    winFeatures += getLocation(winWidth, winHeight, winLeft, winTop)
  else
    winFeatures += getLocation(winWidth, winHeight, d_winLeft, d_winTop)
  popWin = window.open(winURL, winName, "width=" + winWidth 
         + ",height=" + winHeight + winFeatures)
  }
function closePopWin(){    // close pop-up window if it is open 
  if (navigator.appName != "Microsoft Internet Explorer" 
    || parseInt(navigator.appVersion) >=4) //do not close if early IE
    if(popWin != null) if(!popWin.closed) popWin.close() 
  }
function getLocation(winWidth, winHeight, winLeft, winTop){
  return ""
  }
//-->
</SCRIPT>

<SCRIPT Language="JavaScript1.2">  // for Netscape 4+ and IE 4+
<!--
function getLocation(winWidth, winHeight, winLeft, winTop){
  var winLocation = ""
  if (winLeft < 0)
    winLeft = screen.width - winWidth + winLeft
  if (winTop < 0)
    winTop = screen.height - winHeight + winTop
  if (winTop == "cen")
    winTop = (screen.height - winHeight)/2 - 20
  if (winLeft == "cen")
    winLeft = (screen.width - winWidth)/2
  if (winLeft>0 & winTop>0)
    winLocation =  ",screenX=" + winLeft + ",left=" + winLeft   
            + ",screenY=" + winTop + ",top=" + winTop
  else
    winLocation = ""
  return winLocation
  }
//-->
</SCRIPT>

Hierna wordt in de body m.b.v. de volgende regel zo'n 100 maal een andere foto aangeroepen:
code:
1
    <a href='JavaScript:openPopWin("photos/newyear/002.jpg", 700, 530, "", "cen", "cen")'>[img]"photos/newyear/002t.jpg"[/img]</a>

Kan iemand mij helpen met deze vreemde verschijnselen

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
bij mij doet het scriptje het prima (IE 6.0)

//edit:
in mozilla werkt het ook

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 13-09 09:53

RM-rf

1 2 3 4 5 7 6 8 9

het script opent standaard in het window met de name "popWin", dus enkel de eerste maal als je de popup opent creeert hij een nieuw venster, zolang je dat venster niet afsluit worden alle vensters in hetzelfde venster geopend.

als je je originele pagina opent in het venster dat eerder ge-pop-upped is, zal de pagina ook in hetzelfde venster openen.
als dat nog steeds niet verklaart wat er gebeurt moet je erop rekenen dat je gewoon tiepfouten gemaakt hebt.

verder is je code zacht gezegd nutteloos ingewikkeld

probeer het eens met
code:
1
2
3
4
5
6
7
8
<script language="JavaScript" type="text/javascript">
function openPopWin(url)
{
   naam = "popup plaatje"
   eigenschappen = "width=700,height=530"
    window.open(url, naam, eigenschappen)
}
</script>

en als link
code:
1
    <a href="JavaScript:openPopWin('photos/newyear/002.jpg')">[img]"photos/newyear/002t.jpg"[/img]</a>

eventueel kun je de search op GoT gebruiken voor meer configuraties in de eigenschappen

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:46

crisp

Devver

Pixelated

Op donderdag 28 februari 2002 19:01 schreef RM-rf het volgende:
het script opent standaard in het window met de name "popWin", dus enkel de eerste maal als je de popup opent creeert hij een nieuw venster, zolang je dat venster niet afsluit worden alle vensters in hetzelfde venster geopend.
Dat dacht ik eerst ook tot ik eens wat beter naar de code keek:
code:
1
winName = "popWin" + winCount++

variabele winCount is een global, die hier heel tricky ook meteen opgehoogd wordt. Of dit inderdaad ook zo werkt weet ik niet (zou ik uit moeten testen), maar het getuigt imho wel van slordig programmeren...

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
winName wordt gebruikt als id van de window. Niet als handler. Daardoor vind ik de code erg vaag worden, want alle windows krijgen dezelfde handler.

Als dan dus bijvoorbeeld de functie uit wordt gevoerd om te checken of het window nog open staat of dat deze reeds gesloten is, kijkt ie naar de handler van alle windows met de handler popWin. Wordt wel heel erg rommelig en ik heb eigenlijk geen idee wat de browser er mee doet, ik neem aan dat het eerste popWin steeds wordt overschreven door de daaropvolgende. Dus dan blijft slechts de laatste window binnen bereik om te 'besturen'.

Ik zou inderdaad net als RMrf zeg, maar even op zoek gaan naar een simpeler scriptje (of natuurlijk gewoon wat RMrf je haast voorkauwd gebruiken :P)