[JS] checken of de popup referer nog bestaat

Pagina: 1
Acties:

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
ik las in een heel oud topic het volgende. Dit gaat over het openen van een popup, maar ALLEEN als het window ECHT gesloten wordt (dit gebeurd via de onUnLoad in de <BODY>) en niet via de back-knop of een link oid (die ook een call krijgen naar onUnLoad):
Kun je touwens niet gewoon die popup gebruiken om te tsjekken?
En dan bedoel ik:
- op 'unload' de popup openen
- laat de popup tsjekken of de opener nog bestaat
- zoja, laat de popup zichzelf weer sluiten
- zo nee, stay alive
Maar mijn vraag is HOE je dit doet. Hoe kijk je in die popup of de referer nog bestaat?

Kon niks in die topic vinden, via de search en google niet (google geeft me daarentegen een hoop popupkiller-reclame cadeau ;))

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

André

Analytics dude

Tis wel een ranzige manier want je krijgt een geflikker met popups maar het kan wel. Volgens mij kun je in de popup gewoon iets doen van if(window.opener) { bla. Maar dit zul je iets moeten vertragen omdat hij even moet wachten totdat het vorige scherm ook echt gesloten is.

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
ja het is ook een hele ranzige manier, dus ik betwijfel of dat lekker browsed, maar uit de topic bleek dat dat de enige oplossing is.. beetje suf wel :S

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Je moet gewoon controleren of de opener nog bestaat. Op Quirksmode staat nog een uitleg over het gebruik maken van opener e.d.

code:
1
2
3
if (!window.opener) { 
    alert('opener bestaat niet');
}

[ Voor 6% gewijzigd door Woudloper op 08-10-2004 11:12 ]


  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
Woudloper schreef op 08 oktober 2004 @ 11:11:
Je moet gewoon controleren of de opener nog bestaat. Op Quirksmode staat nog een uitleg over het gebruik maken van opener e.d.

code:
1
2
3
if (!window.opener) { 
    alert('opener bestaat niet');
}
ik zit dit nu te testen maar vaak lijkt dit een kwestie van tempo voordat het window.openere is ge-unload.. ik heb nu dit als code binnen m'n popup
code:
1
2
3
4
5
6
7
8
9
<script language="javascript">
<!-- begin
if (window.opener.closed){
    alert('1');
}else{
    alert('2');
}
// end -->
</script>

Als ik dus de parent sluit roept en de popup opent geeft ie soms 1 en soms 2, wat mij lijkt te duiden op iets als net mazzel hebben of niet dat 't object geunload is. Of klopt dat niet?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:47

crisp

Devver

Pixelated

ik zou het sowieso combineren:
JavaScript:
1
if (!window.opener || window.opener.closed) { }

Intentionally left blank


  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
Hmm lijkt ook niet erg succesvol. Ik heb het geupload naar http://www.moonpirates.nl/ooip/test.html

Je ziet met closen dat ie soms wel de popup laat staan, en soms dat ie 'm snel weer killed..

edit: raar, als ik 'm open vanaf hier werkt het anders als dat ik de URL direct in m'n addressbar knal, apart...

[ Voor 24% gewijzigd door apNia op 08-10-2004 11:43 ]


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

André

Analytics dude

Daarom zei ik ook dat je die check iets moet vertragen met een timeout.

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
Perfect! Timeout van 1ms schijnt al voldoende te zijn.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Untitled Document</TITLE>
<script language="javascript">
<!-- begin

setTimeout("checkup()",1);

function checkup(){
    if (!window.opener || window.opener.closed){
        //alert('a');
    }else{
        window.close();
    }
}
// end -->
</script>
</HEAD>

<BODY>
</BODY>
</HTML>
Het is nu alleen irritant dat dus nog steeds die popup ff kort verschijnt.. maar ff zoeken naar iets dat de focus op m'n parent zet .. heel moeilijk om te callen bij een onUnLoad event denk ik...

Maar onwijs bedankt guys =)

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
For the note en searchers: dat flikkeren heb ik heel sneaky opgelost...
http://www.moonpirates.nl/ooip/test.html
Wat ik nu doe is de popup openen op 3000x3000 pixels. Zodra die open mag blijven doe ik via window.moveTo(100,100); de popup weer terugknallen op de juiste positie =)
Viezig, maar werkt wel!

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

André

Analytics dude

apNia schreef op 08 oktober 2004 @ 12:46:
For the note en searchers: dat flikkeren heb ik heel sneaky opgelost...
http://www.moonpirates.nl/ooip/test.html
Wat ik nu doe is de popup openen op 3000x3000 pixels. Zodra die open mag blijven doe ik via window.moveTo(100,100); de popup weer terugknallen op de juiste positie =)
Viezig, maar werkt wel!
Voor grote resoluties is dit nog niet veilig, zet hem dan op -3000 bij -3000 :)

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 21-05 15:02

apNia

Schreeuwen en Nibbits eten!

Topicstarter
André schreef op 08 oktober 2004 @ 12:50:
[...]

Voor grote resoluties is dit nog niet veilig, zet hem dan op -3000 bij -3000 :)
(L) you're the best... case closed!
Pagina: 1