iOS developer
Nee, dat is niet mogelijk. Maar als iemand wel een popup blocker gebruikt dan zal de reference van window.open 'null' zijn. Als je dus een functie maakt welke de popup voor jouw opent, kan die ook de afvang doen in het geval de popup niet werkt.
Het is zelfs zeer correct dat je niet zonder een trigger kunt controleren of iemand een popup blocker heeft.
Overigens is tegenwoordig het gebruik van popup's niet meer nodig. Via divjes met css en wat ajax toverwerk is de popup goed te vervangen. Komt nog bij dat IE7 en Firefox (windows) zelfs extra geheugen gaan gebruiken als continue popup worden geopend en daarna weer gesloten.
Wil je perse een 'popup' triggerren. Gebruik dan gewoon <a href="" target="MyPopuWindows">.
Het is zelfs zeer correct dat je niet zonder een trigger kunt controleren of iemand een popup blocker heeft.
Overigens is tegenwoordig het gebruik van popup's niet meer nodig. Via divjes met css en wat ajax toverwerk is de popup goed te vervangen. Komt nog bij dat IE7 en Firefox (windows) zelfs extra geheugen gaan gebruiken als continue popup worden geopend en daarna weer gesloten.
Wil je perse een 'popup' triggerren. Gebruik dan gewoon <a href="" target="MyPopuWindows">.
If it isn't broken, fix it until it is..
Ik snap waar je heen wilt, maar ik (lees: de klant) wil op sommige momenten dat mensen een formulier verlaten zonder het te submitten de mensen een enquête onder hun neus schuiven als ze op ja antwoorden. Overigens heb ik met dit testscript opeens de bizarre wending dat ik in FireFox pop-ups kan openen zonder problemen:
In IE worden echter alle scripts afgesloten met een ActiveX melding in een gele balk. IE houdt niet zo van pop-up blocker detectie?
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
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
55
56
57
58
59
60
61
62
63
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <script> var nice = false; var second = false; var tryPopUp = false; var testPopUp = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no'); var canPopUp = (testPopUp) ? true : false; testPopUp.close(); alert('alaif'); var unloadFunction = function () { if (!nice && !second) { second = true; if (!confirm('ONBEFOREUNLOAD ja/nee')) { nice = true; } } } var closeFunction = function () { alert('closefun'); alert((!nice && !second && canPopUp)); if (!nice && !second && canPopUp) { second = true; if (!confirm('ONCLOSE ja/nee')) { nice = true; } else { tryPopUp = true; } } } //window.onclose = closeFunction; window.onbeforeunload = unloadFunction; window.onunload = function () { if (!nice) { window.onbeforeunload = function () { var foo = 'bar'; } window.onclose = function () { var foo = 'bar'; } if (canPopUp) { window.open('vragen.html'); } else { window.location.href='vragen.html'; } } } function niceClick() { nice = true; } </script> </HEAD> <BODY> <a onmouseup="niceClick()" href="goed.html">Goed</a> | <a href="fout.html">Fout</a> </BODY> </HTML> |
In IE worden echter alle scripts afgesloten met een ActiveX melding in een gele balk. IE houdt niet zo van pop-up blocker detectie?
iOS developer
Als ik met beforeunload een confirm lanceer en deze laat redirecten naar de pagina met vragen bij true en anders niets doe, dan werkt dat alleen als de browser niet gesloten wordt. Als dit wel het geval is, krijg je een confirm en dan gebeurt er vervolgens niets, wat erg slordig is. Verder werkt dit ook niet lekker met een back-button.
iOS developer