[DHTML <ONLOAD>] Check als functie al geladen is

Pagina: 1
Acties:

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Ik heb even een vraag:

Ik heb er op mijn site ervoor gekozen om een apart venstertje met muziek te laten laden op de index-pagina. De functie die ik hiervoor gebruik heet MusicWindow() en in de body staat dus ook een OnLoad tag waarin de functie MusicWindow() wordt aangeroepen. Mijn probleem is nu het volgende:

Als bezoekers van m'n site vanaf 'n andere pagina teruggaan naar de index-pagina, dan wordt de MusicWindow() functie wederom aangeroepen. Ik weet dat ik IF IsLoaded (of zoiets dergelijks) kan gebruiken om een check in te bouwen. Maar hoe voorkom ik middels zo'n check dat MusicWindow() wordt aangeroepen als MusicWindow() al een keer geladen is?

Ik heb nu namelijk last van het volgende effect: m'n site wordt geladen en er opent zich, keurig zoals dat de bedoeling is, een extra venster met muziek voor de site. Nu ben ik aan 't navigeren en keer terug naar m'n homepage. Dan wordt 't venstertje ook opnieuw geladen... Hoe dit te voorkomen?

  • Gem1e
  • Registratie: December 2000
  • Laatst online: 25-02-2025
JavaScript:
1
2
3
4
if (!musicWindow)
{
var musicWindow = window.open(hier je properties)
}


succes :)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Kun je alleen voorkomen door het plaatsen van een cookie, of het gebruiken van een frameset (yuk!).

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Gem1e schreef op 02 July 2003 @ 10:39:
JavaScript:
1
2
3
4
if (!musicWindow)
{
var musicWindow = window.open(hier je properties)
}


succes :)
Moet ik deze code in een koepelfunctie zetten of zou de OnLoad Tag nu gewoon moeten werken :o ik heb even gechecked, maar nu zie ik de popup nie meer |:( ... Of doe ik iets fout?

HTML:
1
2
3
4
5
6
7
8
9
10
11
<HTML>
<HEAD>

<SCRIPT Language = JavaScript>
if (!musicWindow)
{var musicWindow = window.open('music.htm', 'menubar=no,toolbar=no,resizable=yes,status=yes',width=800,height=600)}
</script>
</HEAD>
<Body onload="musicWindow">
</Body>
</HTML>


De browser rapporteert geen fouten als ik de bovenstaande code gebruik. Als ik echter <Body onload="musicWindow"> wijzig in <Body onload="musicWindow()"> dan krijg ik wel een fout; deze lijkt me logisch omdat MusicWindow in dit geval een variable is.

Het zou heel fijn zijn als ik dit uiteindelijk aan de praat kreeg... :o

Alvast bedankt

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<HTML>
<HEAD>

<SCRIPT Language = JavaScript>
function init()
{
if (!musicWindow)
{var musicWindow = window.open('music.htm', 'menubar=no,toolbar=no,resizable=yes,status=yes',width=800,height=600)}
}
</script>
</HEAD>
<Body onload="init()">
</Body>
</HTML>

zo moet het werken :)

Stop uploading passwords to Github!


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Papa Eend schreef op 02 July 2003 @ 12:00:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<HTML>
<HEAD>

<SCRIPT Language = JavaScript>
function init()
{
if (!musicWindow)
{var musicWindow = window.open('music.htm', '...')}
}
</script>
</HEAD>
<Body onload="init()">
</Body>
</HTML>


zo moet het werken :)
Dus als je refresht of later op die pagina terugkomt krijg je niet nogmaals de popup? :)

Misschien ben ik blind, maar dat is toch wat ie vraagt in zijn post :?

(bovendien klopt er weinig van je window.open aanroep ;)

Of blijft die popup altijd op de achtergrond staan... want kweetniet hoor, maar 9 van de 10 mensen sluit volgens mij iedere popup :P

[ Voor 24% gewijzigd door Bosmonster op 02-07-2003 12:19 ]


  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Heel vreemd... Ik krijg van m'n browser een invalid Argument foutmelding op line 8, char 2... Dat zou betekenen dat ' var' een onjuist argument is :o ? (Windows Server 2003, Security Level: Low, Enhanced Internet Explorer Security Configuration: Enabled... Zou het probleempje kunnen zijn...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

nee dat betekent zoals ik al zei dat de window.open aanroep niet klopt ;)

window.open ('bestand.html', 'target', 'opties');

Zo werkt window.open :)

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
[knip]
[/knip]

[ Voor 98% gewijzigd door csteelooper op 02-07-2003 15:14 . Reden: Helaas... moet nog even doorploeteren... ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Je kunt de muziek in een popup afspelen.. die blijft bestaan als mensen het hoofdvenster verversen. Mensen die geen muziek willen of popups disabled hebben horen dan ook geen muziek (waarschijnlijk hun wens ;))

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Dankje... daar was ik al uit, want die OnLoad vraag had juist met de muziek-popup te maken... :o . Wat ik bedoel is het volgende: op het moment dat de homepage wordt geladen, wordt de pop-up (nu binnen hetzelfde venster, ook herladen. Dit heeft tot gevolg dat de muziek opnieuw start. Als die zou doorspelen zou 't fijner zijn... Zoals ik al zei: dit is niet van levensbelang hoor... ;)

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
hmmm... In tegenstelling tot wat ik eerder zei... Als ik de pagina die de popup laadt refresh, dan krijg ik m'n popup nog een keer. Dat is met name irritant als je de popup gebruikt voor het afspelen van muziek. Wat ik nou wil is een manier om te voorkomen dat die popup nogmaals geladen wordt... :( Blijkt nu dat toen ik zei dat 't werkte, de popup actief was en díe dus gerefreshed werd... |:(

edit:

de code an sich werkt nu wel...


HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>

<head>

<script language="Javascript">

function NewPage()
{
if (!MusicWindow)
{var MusicWindow = window.open('music.htm','','scrollbars=no,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no,width=280,height=290,left=220,top=225');}
}

</script>

</head>

<body OnLoad="NewPage()">
</body>

</html>

[ Voor 46% gewijzigd door csteelooper op 02-07-2003 15:07 . Reden: aanvulling ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
  <head>
    <script language="Javascript">
      function NewPage()
      {
        if (!MusicWindow)
        {
          var MusicWindow = window.open('music.htm','MusicWindow','scrollbars=no,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no,width=280,height=290,left=220,top=225');
        }
      }
    
    </script>
  </head>
  <body OnLoad="NewPage()">
  </body>
</html>

Zo? _/-\o_

[ Voor 44% gewijzigd door André op 02-07-2003 15:21 ]


  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
[Knip]
[/knip]
[nieuw]
JAAAAAAH!!!! Eindelijk!!! Thnx André!!! _/-\o_
[/nieuw]

[ Voor 191% gewijzigd door csteelooper op 02-07-2003 15:26 . Reden: Het Werkt!!!! ]


Verwijderd

Het woordje var moet daar sowieso weg.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

csteelooper schreef op 02 July 2003 @ 15:19:
[...]

hmmm... In tegenstelling tot wat ik eerder zei... Als ik de pagina die de popup laadt refresh, dan krijg ik m'n popup nog een keer. Dat is met name irritant als je de popup gebruikt voor het afspelen van muziek. Wat ik nou wil is een manier om te voorkomen dat die popup nogmaals geladen wordt... :( Blijkt nu dat toen ik zei dat 't werkte, de popup actief was en díe dus gerefreshed werd... |:(
Mjah, stiekum had ik dit dus al verw8... Je zult waarschijnlijk met cookies moeten gaan werken die pas gecleaned worden op het moment dat je de player afsluit.

Stop uploading passwords to Github!


  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Nogmaals: na de laatste versie van het script (thanx andré) gebruikt te hebben werkt het nu eindelijk!!! Los dan van het feit dat de muziek nog wel opnieuw start, maarja dat moet dan maar!!! _/-\o_

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

csteelooper schreef op 02 July 2003 @ 15:28:
Nogmaals: na de laatste versie van het script (thanx andré) gebruikt te hebben werkt het nu eindelijk!!! Los dan van het feit dat de muziek nog wel opnieuw start, maarja dat moet dan maar!!! _/-\o_
Dat is waarschijnlijk te wijten aan het feit dat hij de popup toch opnieuw opent, maar dan in de oude popup. Dus er komt geen nieuwe bij, maar de oude word gerefreshed.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated


Alternatief is om in je popup te pollen naar je opener. Klein voorbeeldje:

main.html:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head>
<title>main</title>
<script type="text/javascript">

var priet = 0;

function popup() {

  if (!priet) priet = window.open('popup.html', 'priet', '');
  priet.focus();

}

</script>
</head>
<body onload="setTimeout('popup()', 200);">
main
</body>
</html>


popup.html:

HTML:
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
<html>
<head>
<title>popup</title>
<script type="text/javascript">

function keep_link() {

  try {

    if (opener && typeof(opener.priet) != 'undefined') {
      if (!opener.priet) opener.priet = self;
    }

  } catch(error) {

    window.close();

  }

}
</script>
</head>
<body onload="setInterval('keep_link()', 100)">
popup
</body>
</html>


Als je nu main.html refreshed, dan zet hij weer de focus op de popup zonder die te herladen. Door het pollen is namelijk de variabele priet weer gevuld met de referentie naar de popup zelf :)
Als je helemaal wegnavigeerd van de site, of main.html afsluit wordt de popup ook gesloten :)

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Haha, master of popups, hij kon ook niet wegblijven ;)

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Dat klopt... ik zie dat de popup gerefreshed wordt... Maarja de code werkt nu verder prima en ik neem aan dat aan die extra refresh van de popup nix te doen is ... of wel? (Nie al te ingewikkeld a.u.b, 't moet 'n beetje begrijpelijk blijven, dus bij voorkeur niet over cookies en hoe ze te gebruiken, o.i.d...) :)

btw: weet jij waarom achtergrondmuziek in internet explorer niet gewoon doorspeelt op het moment dat je de pagina met muziek minimaliseert? Heeft dat iets met window-focus te maken?

[ Voor 6% gewijzigd door csteelooper op 02-07-2003 15:40 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

csteelooper schreef op 02 juli 2003 @ 15:38:
Dat klopt... ik zie dat de popup gerefreshed wordt... Maarja de code werkt nu verder prima en ik neem aan dat aan die extra refresh van de popup nix te doen is ... of wel? (Nie al te ingewikkeld a.u.b, 't moet 'n beetje begrijpelijk blijven, dus bij voorkeur niet over cookies en hoe ze te gebruiken, o.i.d...) :)
eerst lezen dan posten ;)
btw: weet jij waarom achtergrondmuziek in internet explorer niet gewoon doorspeelt op het moment dat je de pagina met muziek minimaliseert? Heeft dat iets met window-focus te maken?
heeft denk niet met focus te maken maar met het geminimaliseerd zijn; als je er een pop-under van maakt heb je al minder kans dat mensen 'm minimaliseren, anders zou je toch naar een (hidden) frame moeten gaan kijken...

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

crisp schreef op 02 July 2003 @ 15:51:

heeft denk niet met focus te maken maar met het geminimaliseerd zijn; als je er een pop-under van maakt heb je al minder kans dat mensen 'm minimaliseren, anders zou je toch naar een (hidden) frame moeten gaan kijken...
Of je zet in het window een window.moveTo(10000,0); :)
Dan hoeven mensen hem ook niet te minimaliseren, alleen het is wel lastig dat hij dan buiten het scherm staat.
offtopic:
ik zie dat soort buitenschermse popups steeds vaker :(

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
offtopic:
Ik ben het met je eens. Ik vind offscreen popups heeel erg irritant. Zeker als je de intentie hebt mensen te laten kiezen of ze 'm willen zien of niet... Ben allang blij dat de popup nu geen dertig keer meer op 'n scherm kan komen...


Stel je hebt een functie MoveWindow() (die wil ik gebruiken om dat venstertje te verplaatsen), die je tijdens het laden van je page wilt aanroepen. In de body roep je ook nog de achtergrond balls.jpg aan, en laat je die vastzetten, zodat-ie niet mee scrolt. In dat geval is het te gebruiken onload statement toch

HTML:
1
<Body OnLoad="MoveWindow()" background="balls.jpg" bgproperties="fixed">
?

Het muziekvenster zelf wordt op soortgelijke manier aangeroepen, alleen is de functienaam hier NewPage(). Als ik de MoveWindow() functie via een OnLoad tag wil aanroepen, komt IE telkens met de fout: Object Expected... Ik heb wel nog andere info in de body staan, zoals de background... Maar dat heb ik in de homepage (vanwaar het muziekvenster wordt geladen) ook. :?

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
Crisp> Ik weet niet of dat zal werken met de site in kwestie, omdat de site uit aparte pagina's bestaat, die telkens in 't zelfde hoofdvenster worden geladen (was 'n schoolopdracht, gemaakt in frontpage, zonder frames)... je zou dus altijd wegnavigeren van main.html.
Maar bedankt voor de tip in ieder geval...

[ Voor 19% gewijzigd door csteelooper op 02-07-2003 16:57 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

csteelooper schreef op 02 juli 2003 @ 16:54:
Crisp> Ik weet niet of dat zal werken met de site in kwestie, omdat de site uit aparte pagina's bestaat, die telkens in 't zelfde hoofdvenster worden geladen (was 'n schoolopdracht, gemaakt in frontpage, zonder frames)... je zou dus altijd wegnavigeren van main.html.
Maar bedankt voor de tip in ieder geval...
wegnavigeren van de site, niet van de pagina. Oftewel: naar een andere site gaan. Zolang je op dezelfde server blijft zal de popup blijven staan, navigeer je echter naar een andere site dan zal het benaderen van de opener een security-error opleveren waardoor de catch getriggerd wordt en de popup wordt afgesloten :)

Intentionally left blank


  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
wh00ps ja bedankt Crisp ik zal dit 's implementeren.... Dan is 't denk ik wel wat meer surfgemak... Dankjewel... Ik wist niet dat je verschil maakte tussen site als in 'server' en site als in 'pagina'. heb er zelf nooit echt heel erg bij stilgestaan hoe zo'n poller werkt...

  • csteelooper
  • Registratie: April 2002
  • Laatst online: 13-09-2025
tnx... deze functie kende ik dus Absoluut niet... :o Ik vind die wel héél erg handig, want zo blijft de popup geen seconde te lang open.

Verwijderd

Kee, uhm nu heb ik ff hulp nodig hoor... ben niet zo'n slimbo nml

Ik heb het volgende myphpnuke en in de header een link naar window wat ik dus zonder buttons en andere shit wil openen. Zie onder

."<td width=\"16%\" class=\"cellbox\" align=\"center\" style=\"cursor:hand\" onMouseOver=\"this.style.background='#8BA46A'\" onMouseOut=\"this.style.background=''\" onClick=\"window.location.href='chat.php'\"><a href=\"chat.php\">Chat Nu!</a></td>\n"


Nu wil ik dat chat window maar een maal geopend hebben, zo dat ze niet meerdere chat windows kunnen werken.

Iemand een tip hoe ik dat bovenstaande in mijn headertje kan frotten zonder dat de layout naar zijn @#@# gaat.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Je zult nooit kunnen voorkomen dat ze meerdere chatvensters openen. Het enige wat je kunt doen is zorgen dat een link niet elke keer een nieuw venster opent. Om dit te doen geef je het gewoon een target mee.
Pagina: 1