Avatar billede misbruger Nybegynder
02. april 2004 - 11:53 Der er 19 kommentarer og
1 løsning

Tjeck for popup blocker

Jeg har lavet et site, hvor der kører en wizard, som bliver åbnet i en seperat vindue.

Problemmet er at der efterhånden er flere og flere der kører med en popup block'er, så de modtager ikke denne wizard....

Er der nogen der har et script der tjekker om hvorvidt brugeren benytte en popup blokker....?

Scriptet skal understøtte IE5+ & NS7+ & Opera7+

Thanx!
Avatar billede sbm Nybegynder
02. april 2004 - 12:06 #1
Jeg ved der er lavet nogle scripts der kan checke for det, men alternativt kan du jo lave din wizard som et layer. I så fald vil popup-blockeren ikke gøre noget ved den.

Bare en tankestreg. :-)
Avatar billede roenving Novice
02. april 2004 - 12:09 #2
Du kan sætte din window.open ind i en try-catch-blok, og så gøre noget andet, hvis der er fejl ...

-- eller du kan bede popuppen rapportere tilbage, og hvis der ikke kommer noget gøre noget andet ...
Avatar billede misbruger Nybegynder
02. april 2004 - 12:16 #3
Hvordan villle du lave en try catch ?
Avatar billede roenving Novice
02. april 2004 - 12:52 #4
try{
  //dine javascript-statements, f.eks.
  window.open('wizard.php','wizard','width=200,height=150,resizable=yes');
}catch(e){
  //Hvis der er opstået fejl, kan der rettes op på det
  //eventuel fejl-sortering kan laves udfra indholdet af variablen e
  alert('Da vores wizard er nødt til at køre som popup,\nbedes du tillade denne popup !-)');
}finally{
  //Hvis der er noget som under alle omstændigheder skal ryddes op i efter forsøget med at køre den første kode er gjort
  //Og det var nødvendigt at vente til efter fejl-retning e.l.
}
Avatar billede misbruger Nybegynder
02. april 2004 - 12:57 #5
det viste jeg ikke at man havde i javascript.... :(og jeg kan heller ikke få det til at virke)
Avatar billede misbruger Nybegynder
02. april 2004 - 13:00 #6
Den tror at vinduet bliver åbnet (hvilket det faktisk også gør, men det lukkes bare med det samme) af den popup blokker jeg bruger (google-bar)
Avatar billede roenving Novice
02. april 2004 - 13:00 #7
Kører uden problemer hos mig, den fanger straks, hvis jeg ikke tillader popups !-)
Avatar billede roenving Novice
02. april 2004 - 13:04 #8
Min popup-stopper virker også med at lukke vinduer, men det kan godt ske, at det sker tidligere under åbningen, end din google-bar ...

Men så kan man jo lave en kombivare, hvor man enten

-- i popup'en sætter en variabel på åbner-dokumentet, som så checkes efter f.eks. 50 ms., eller

-- efter de 50 ms. prøver om popup-vinduets document eksisterer ...
Avatar billede roenving Novice
02. april 2004 - 13:13 #9
F.eks. sådan, hvor du skal sætte et element fra dit popup-dokument ind i stedet for det, jeg har brugt:

var win;
function winOpen(){
try{
  //dine javascript-statements, f.eks.
  win = window.open('wizard.php','wizard','width=200,height=150,resizable=yes');
  setTimeout('testWin()',50);
}catch(e){
  //Hvis der er opstået fejl, kan der rettes op på det
  //eventuel fejl-sortering kan laves udfra indholdet af variablen e
  alert('Da vores wizard er nødt til at køre som popup,\nbedes du tillade denne popup !-)');
}finally{
  //Hvis der er noget som under alle omstændigheder skal ryddes op i efter forsøget med at køre den første kode er gjort
  //Og det var nødvendigt at vente til efter fejl-retning e.l.
}}
function testWin(){
try{
  var dummy = win.document.form1.felt1.value;//her indsætter du en reference til noget du har i popup'en
}catch(e){
  alert('Da vores wizard er nødt til at køre som popup,\nbedes du tillade denne popup !-)');
}}
Avatar billede sbm Nybegynder
02. april 2004 - 13:19 #10
Nå. Roenving har også haft travlt. :-) Ja ok. Jeg har ellers strikket dette eksempel sammen:

Dokument 1 hvorfra man åbner sin popup:

<html>
<head>
<script language="Javascript1.2">
window.open('popupdoc.htm','','width=100,height=100,left=20,top=20,scrollbars=no,status=yes,toolbar=no,menubar=no,location=no');
function checkPopup() {
    if (document.testform.test1.value=='popped up ok') {
        alert('Popup OK');
    }
    else {
        alert('Popup ikke OK');
    }
}
</script>
</head>
<body onload="setTimeout('checkPopup()',1000);">
Main doc.
<form name="testform" action="ditdomain.dk/whatever">
<input type="test" name="test1" />
</form>
</body>
</html>




Dokument 2 som så skal hedde popupdoc.htm og ligge i samme mappe som første dokument:

<html>
<body>
<script LANGUAGE="JAVASCRIPT">
eval('window.opener.document.testform.test1.value = "popped up ok";');
window.opener.checkWeekday('0','0','no');
window.close(self);
</script>
Popup vindue
</body>
</html>
Avatar billede sbm Nybegynder
02. april 2004 - 13:20 #11
Hov. Jeg korrigerer lige dokument 2:

<html>
<body>
<script LANGUAGE="JAVASCRIPT">
window.opener.document.testform.test1.value = "popped up ok";
window.opener.checkWeekday('0','0','no');
window.close(self);
</script>
Popup vindue
</body>
</html>
Avatar billede sbm Nybegynder
02. april 2004 - 13:21 #12
Du kan så selvfølgelig sætte <input type="test" name="test1" /> til at være hidden. :-)
Avatar billede sbm Nybegynder
02. april 2004 - 13:22 #13
doh. test = text
Avatar billede roenving Novice
02. april 2004 - 13:40 #14
>>sbm

Må jeg lige stille et spørgsmålstegn ved din taktik med ikke at angive et window-name i window.open, det er en uklog måde at gøre det på, og specielt at lære andre at gøre !-)
Avatar billede sbm Nybegynder
02. april 2004 - 13:42 #15
Ok. Det er så taget til efterretning. Kan du eventuelt give en forklaring til hvorfor det er det? :-)
Avatar billede roenving Novice
02. april 2004 - 13:47 #16
Fordi der så eksisiterer et window-objekt i browserens objekt-hierarki, med et navn, som er den tomme streng ...

Alt andet lige kan det ikke undgå at give problemer, når nu browseren ideligt skal finde et vindue og oftest har behov for at bruge denne identifikator, som jo er en slags id, altså unik identifikator !-)

-- og du kan overbevise dig om det unikke ved at åbne flere vinduer med samme window-name, jeg udnytter det f.eks. til at have en hel stribe vinduer åbne, hvor hotmail, eksperten m.m. genåbnes med forskellige intervaller, så jeg har en opdatering af vinduerne hvert 5. eller 10. minut !o]
Avatar billede misbruger Nybegynder
06. april 2004 - 15:55 #17
Ok drenge her er hvad jeg har gjort.....

<script>
function OpenMyWindow()
{
  BookingWindow = Open.Window('Ya','Di','Da');
}
function CheckWindow()
{
  if(BookingWindow)
  {
    alert("great, no popup killer");
  }
  else
  {
    alert("Ohh no! Please remove you popup killer");
  }
}
</script>

<a href="java script:;" onClick="OpenMyWindow(); setTimeOut(CheckWindow(), 500);">Åben Booking vinduet</a>

Så en lidt mere simplificeret version er jeres...
- Jeg forstår ikke hvorfor i tjekker på et input felt i formen... Er det fordi så ved I at siden er loaded?

..om ikke andet, så virker dette fint for mig.

I skal begge have tak!

SU.
Avatar billede misbruger Nybegynder
09. april 2004 - 12:29 #18
svar udbedes
Avatar billede roenving Novice
09. april 2004 - 14:01 #19
Oki, velbekomme '-)
Avatar billede roenving Novice
23. april 2004 - 00:30 #20
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester