Avatar billede espersen Novice
27. marts 2004 - 12:08 Der er 57 kommentarer og
1 løsning

popup eller lign når besøgende forlader sitet

Et site ønsker at høre de besøgendes mening om design, brugervenlighed osv. Det skal ske via fx. et popup-vindue hvor de besøgende inviteres til at deltage i den lille undersøgelse.

Det er jo nok ikke så smart at der kommer en popup allerede ved indgang på siden (de har jo ikke set noget endnu... og skal ikke på dette tidspunkt generes med et popup)

Derfor måske bedre at der kommer et popup når den besøgende forlader sitet (men det er jo svært at vide hvilken side de er på når de er færdige med at kigge rundt).

Er meget bevidst om at popup måske ikke er optimalt pga. irritationsmomentet samt at nogen bruger popup-stoppere - men kan ikke selv komme på en anden idé til at få så mange som muligt til at besvare spørgsmålene).

Siderne er i HTML, PHP og lidt JavaScript.

Hvorledes bør dette løses ? Jeg tænker endvidere på situationen hvor en besøgende har åbnet flere vinduer og måske riskere at få flere popups når disse lukkes.... - skal der noget Cookie med?

Point er sat 50 fra en start - og kan selvf. øges i takt med kompleksitet
Avatar billede majsmarken Nybegynder
27. marts 2004 - 13:24 #1
http://www.dynamicdrive.com/
Der burde være en passende i den samling; evt. noget andet "sjovt" som du ellers ka' bruge...
Avatar billede espersen Novice
27. marts 2004 - 13:53 #2
har ledt derinde... har du et lidt mere præcist link..?
Avatar billede jakoba Nybegynder
27. marts 2004 - 14:02 #3
Jeg står og snakker med en kedsommelig fyr. Idet jeg prøver at dreje mig og komme væk tager han fat og holder mig så jeg er mødt til at blive. og høre videre på hans snak.

Hvad synes du om den slags fyre ?  På internettet risikerer du ikke en lige højre, men det betyde ikke at du ikke kan fortjene den.

Det kan god være dine spørgsmål er vigtige for dig; men hvis du vil have dem besvaret er det op til dig at gøre dem vigtige for dine besøgende. Du kunne fx gøre din side så god at de ønsker at takke dig, så er det nok at bede dem klikke på spørgeskema linket. Det er ikke ligefrem nemt, men synes du egentlig at du har krav på at det skal være nemt?

mvh JakobA
Avatar billede roenving Novice
28. marts 2004 - 00:23 #4
Cookien er sådan set en okay idé, og i første omgang kan du bruge den til at registrere, hvilket tidspunkt folk er kommet ind på, så du aldrig overvejer at stille dem spørgsmål, før de har brugt et stykke tid på siden !-)

Så kan du jo lave alle interne links med en parameter, som forhindrer spørgsmåls-boksen, så den ikke kommer, når de navigerer internt på sitet ...

-- og den sidste er, at du kan lave din 'popup' som en flydende layer (<div style="position:absolute">) med en form i, for så kan folk selv vælge at overse den !o]
Avatar billede espersen Novice
28. marts 2004 - 00:45 #5
jakoba; enig ; derfor også mine betænkeligheder omkring popups - brugerne skal helst ikke belemres unødigt.

roenving; det lyder ret interessant!!  er det svært at lave ? (har du evt. et eksempel/link til noget der ligner?)
Avatar billede roenving Novice
28. marts 2004 - 03:14 #6
Tjaeh, svært, hrmm, tjah, tjah, bom, bom ...

-- og jeg har ikke selv pillet direkte i en sådan en før !-)

-- Hvis dine brugere bruger IE har den en onbeforeunload-event, som kan benyttes, men ellers kan onunload benyttes, men den er ikke så sikker, fordi handlingen afsluttes, når vinduet er lukket ...

-- men onload kan du checke, om der er sat en cookie med f.eks. værdien start (som du så har sat til et tidspunkt), hvis den ikke er der, skal du så sætte den, når folk så har svaret, kan du sætte den til om rigtig lang tid !-)

Du skal så også sætte en parameter onload, feks.

<script type="text/javascript">
var pop=true;
</script>

Links kan så laves med:

<a href="mitInterneLink.html" onclick="pop=false;">Internt link</a>

-- den værdi kan så checkes, når siden unloades !-)

-- der er mere til føljetonen, hvis det skal virke, så du må lige sige til, hvis det virker realistisk til dit projekt !-)
Avatar billede espersen Novice
28. marts 2004 - 11:02 #7
hhmm..ja tjohh - lyder som noget rigtigt ;o)

Dette har jeg heller ikke rodet med det før - men mon ikke det kunne fixes gennem lidt trial-and-error ;o|

ja, de besøgende bruger reelt kun IE (højeste alternative bruser - Mozilla - ligger på 0,44% af alle hits). Dermed sagt at man godt kan rette den mod dem som bruger IE, uden at det vil have nævneværdig indvirkning det repræsentative udsnit.

Men jeg kan ikke helt gennemskue ovenstående "var pop=true" og så deen følgende "pop-false"
Avatar billede roenving Novice
28. marts 2004 - 12:33 #8
Ca. sådan, så:

<body onbeforeunload="spoergeSkema()">

<script type="text/javascript">
var pop=true;

function spoergeSkema(){
  if(pop)return;
  document.getElementById('skema').style.display='block';
  event.returnValue="Vi vil gerne have, at du besvarer nogle spørgsmål\nom dette site, før du forlader det.\n\nHvis du vil medvirke, skal du trykke på fortryd og udfylde spørgeskemaet.\n\nVi takker på forhånd for ulejligheden!";
}
</script>

<div id="skema" style="position:absolute;top:100px;left:100px;display:none">
<form name="spoergeskema" action="ditModtageScript.php" onsubmit="document.getElementById('skema').style.display='none';">

<!-- dine spørgsmål -->

<input type="submit" value="Besvar">
</form>
</div>

-- ikke testet, men sådan, at du kan prøve ideen !-)
Avatar billede espersen Novice
28. marts 2004 - 22:35 #9
rigtig nice !! det vil jeg komme til at teste/rode mere med - desværre nok først på tirsdag pga. for mange møder i morgen...

Spørgeskemaet køres dog externt fra et andet site ; så popup'en kommer blot til linke til http://www...dk.survey.htm
Avatar billede espersen Novice
31. marts 2004 - 21:38 #10
hhmm.. det driller mig (loader ikke) ; hvis den ved exit blot skal åbne et lille popup (indeholdende lidt tekst + et link) : kan du hjælpe lidt med det..?
Avatar billede roenving Novice
01. april 2004 - 00:20 #11
onunload har det problem, at den skal ekskveres i et adresserum, som er under nedlæggelse, men den placeres også i body:

<body onunload="window.open('dinPopup.html','popup','width=300,height=225,status=0');">

-- og så kan du med fordel lave dit link i popup'en, så den lukker sig selv !-)
Avatar billede espersen Novice
01. april 2004 - 10:12 #12
den popper fint ; men vil den ikke poppe på hver eneste side der lukkes ?
Avatar billede roenving Novice
01. april 2004 - 20:36 #13
Jo ...
Avatar billede espersen Novice
01. april 2004 - 20:46 #14
kan man styre det ved en cookie eller lign. ?
Avatar billede roenving Novice
01. april 2004 - 21:10 #15
En cookie kan kun bruges til at undersøge, hvad der er sket, så det du kan, er at lade popup'en undersøge, om brugeren har brugt tid nok til at besvare, spørge ham om han vil besvare, og forhindre ham i at blive spurgt igen ...

-- du kan ikke på nogen måde få at vide, om hvor han er på vej hen, uden at alle interne links disabler spørgsmålet ved at sætte en variabel, som kan aflæses før der evt. åbnes en popup ...
Avatar billede espersen Novice
05. april 2004 - 12:29 #16
hhmm.... undrer mig lidt...

Jeg har indsat :
<body onunload="window.open(pop.htm','popup','width=300,height=200,status=0');">
i to ellers tomme dokumenter kaldet "popup.htm" & "popup2.htm" for at teste det...

undre mig lidt over:
1. Hvis jeg refresher vinduet så kommer popupvinduet "pop.htm" frem.
2. Hvis jeg lukker "popup.htm" & "popup2.htm" så kommer der kun 1 popup frem (men det jo dejligt!)
Avatar billede espersen Novice
05. april 2004 - 12:39 #17
(og hvordan kan jeg få popup-vinduet til at lukkes når der er klikket på linket til spørgeskemaet?)
Avatar billede roenving Novice
05. april 2004 - 12:40 #18
Jeg vil gætte på, at du lader popup'en stå, når du lukker det andet vindue ..

For så er det fordi window-navnet er det samme, for en ny popup vil komme i det samme window-objekt !-)

-- og du kan prøve det ved i den ene af dokumenter at indsætte et simpelt link:

<a href="http://www.google.dk" target="popup">Google</a>

Åbn begge to, luk det vindue uden linket og tryk på linket, e bueno, du har nu google i popup-vinduet, og hvis du så lukker dokumentet har du pop.htm !-)

-- og så er det vel en tavetosse, at der mangler en pling i den onunload du har skrevet ...
Avatar billede roenving Novice
05. april 2004 - 12:43 #19
Luk popup'en ved klik på link:

<a href="#" onclick="opener.location.href='ditSpoergeskema.html';self.close();">Til spørgeskema</a>

-- eller hvis du vil have det i en anden popup:

<a href="#" onclick="window.open('ditSpoergeskema.html','spoerg','width=640,height=480,status=no');self.close();">Til spørgeskema</a>
Avatar billede espersen Novice
05. april 2004 - 14:38 #20
Den skal åbne et externt link og med dette virker det som om at popup'et lukker men kommer frem igen
<a href="#" onclick="opener.location.href='http://domain.dk/sporgeskema.htm';self.close();">Til spørgeskema</a>
Avatar billede roenving Novice
05. april 2004 - 14:53 #21
Øh ... kommer frem igen ?-)

Måske er det den generelle onunload-kode, som spøger, men det kan vi klare nemt !-)

<script type="text/javascript">
var luk=true;
</script>

<body onunload="if(luk)window.open osv...">

og så:

<a href="#" onclick="opener.luk=false;opener.location.href='http://domain.dk/sporgeskema.htm';self.close();">Til spørgeskema</a>
Avatar billede espersen Novice
05. april 2004 - 15:03 #22
takker ! nu virker det øjensynligt fint - vil lige teste videre for at finde evt. uhensigtsmæssigheder.
Smid lige et svar i mellemtiden ;o) ; du er sgu hård til det her - og jeg lærer det langsomt *S*
Avatar billede roenving Novice
05. april 2004 - 15:32 #23
Velbekomme '-)
Avatar billede espersen Novice
05. april 2004 - 15:36 #24
takker !
Avatar billede roenving Novice
05. april 2004 - 15:42 #25
-- og jeg takker for points ;~}
Avatar billede espersen Novice
09. april 2004 - 14:21 #26
hhmm...den popper søreme også når der navigeres på siderne (dog kun 1 pop - dvs. fra første side til 2. side) - men det er også lige tidligt nok.

Er der en løsning på det ?
Avatar billede roenving Novice
09. april 2004 - 14:34 #27
Hvis du kan kontrollere dine interne links, kan du:

<a href="side2.html" onclick="luk=false;">Side 2</a>
Avatar billede espersen Novice
09. april 2004 - 14:55 #28
info : tekst med link til externt spørgeskema ligger i pop.htm

<!-- Start på brugerundersøgelse-script -->
<script type="text/javascript">
var luk=true;
</script>

<body onunload="if(luk)window.open('pop.htm','popup','width=300,height=200,status=0');">
<!-- Stop på brugerundersøgelse-script -->

dvs. jeg skal udskifte "<body.. bla bla ...;'> med ??:
<a href="pop.htm" onclick="luk=false;">popup</a>
Avatar billede espersen Novice
09. april 2004 - 14:59 #29
hhmmm.. nej da; det vil da selvfølgelig ikke virke ... *S*
Avatar billede roenving Novice
09. april 2004 - 15:02 #30
Nej, alle dine interne links forsyner du med den onclick, som sætter luk=false !-)
Avatar billede espersen Novice
09. april 2004 - 15:05 #31
jeg er nok blevet lidt rundtosset af det JavaScript - og der er halvmange interne links, hvis det gælder alle sider og undersider?
Avatar billede roenving Novice
09. april 2004 - 15:17 #32
En lille genvej:

<script language="javascript" type="text/javascript">
var luk = true;
function makeLinks(){
  var a = document.links;
  for(i=0;a.length>i;i++){
    if(a[i].href.indexOf('http')!=0){
      a[i].onclick = function(){luk=false;}
    }
  }
}
</script>


<body onload="makeLinks()">
Avatar billede roenving Novice
09. april 2004 - 15:21 #33
-- og jeg havde tanken, da vi havde det oppe, men først lige kræfterne til at prøve det af nu !-)
Avatar billede espersen Novice
09. april 2004 - 16:07 #34
hhmm... satte du lige farten op, eller har vi nået bjergene ?
(tror du har sat mig af)
Avatar billede thesurfer Nybegynder
09. april 2004 - 16:12 #35
roenving> Du er sq da også så smart! :-)
Avatar billede roenving Novice
09. april 2004 - 16:12 #36
Der er jo ikke så meget at forstå, og så længe det virker, er det vel egentlig også ligegyldigt, om man har forstået det fuldstændigt !-)

Men makeLinks tager fat i alle links, eksterne skal jo starte med http, de springes over, på de resterende erstattes onclick-funktionen af en simpel funktion, som sætter luk=false, og altså ikke udløser popuppen !o]

Den er selvfølgelig ikke brugbar, hvis du har andet i onclick-events, men så er den da et meget godt eksempel ...
Avatar billede espersen Novice
09. april 2004 - 16:20 #37
nej det korrekt - jeg behøves ikke at forstå den ;o)
- jeg har kun et email-ikon med Onfocus + lidt mouseover-stuff - udover PHP/MySQ

det jeg ikke helt kan forstå er hvor eller hvordan man så udløser pop.htm
Avatar billede roenving Novice
09. april 2004 - 16:22 #38
Hvis der trykkes på eksterne links eller man lukker vinduet, vil luk stadig være true, så popup'en skulle blive udløst !-)
Avatar billede roenving Novice
09. april 2004 - 16:24 #39
-- og måske skulle man tage højde for store bogstaver, så f.eks.

    if(!a[i].href.match(/^http/i)){
Avatar billede espersen Novice
09. april 2004 - 16:25 #40
hhm.. dvs. at der skal være plads til følgende 2 et sted på siderne

<body onload="makeLinks()"> +
<body onunload="if(luk)window.open('pop.htm','popup','width=300,height=200,status=0');">

eller hvorledes skal jeg forstå det ?
Avatar billede roenving Novice
09. april 2004 - 16:27 #41
De skal sættes sammen, så:

<script language="javascript" type="text/javascript">
var luk = true;
function makeLinks(){
  var a = document.links;
  for(i=0;a.length>i;i++){
    if(!a[i].href.match(/^http/i)){
      a[i].onclick = function(){luk=false;}
    }
  }
}
</script>
<body onload="makeLinks()" onunload="if(luk)window.open('pop.htm','popup','width=300,height=200,status=0');">
Avatar billede espersen Novice
09. april 2004 - 16:27 #42
hhm... der er da også et addbookmark med onclick på siden - hvilket jo nok kan drille
Avatar billede roenving Novice
09. april 2004 - 16:29 #43
Ja, men det kan vi vel lokalisere, f.eks. sådan:

    if(!a[i].href.match(/^http/i)||a[i].href=="#"){
Avatar billede espersen Novice
09. april 2004 - 16:33 #44
med ovenstående indsat på siderne så pop'er den stadig ved navigering til en anden side.
Avatar billede thesurfer Nybegynder
09. april 2004 - 16:39 #45
espersen> Det er jo klart :-)
Når siden skifter side, udføres "onunload"-koden.. :-)
Avatar billede roenving Novice
09. april 2004 - 16:39 #46
Hrm ...

Der var en logisk fejl, men ellers sker det først, hvis man flere gange trykker på links ...

<script language="javascript" type="text/javascript">
var luk = true;
function makeLinks(){
  var a = document.links;
  for(i=0;a.length>i;i++){
    if(!a[i].href.match(/^http/i)&&a[i].href!="#"){
      a[i].onclick = function(){luk=false;}
    }
  }
}
</script>
<body onload="makeLinks()" onunload="if(luk)window.open('pop.htm','popup','width=300,height=200,status=0');"><br>
Avatar billede thesurfer Nybegynder
09. april 2004 - 16:41 #47
hmm.. har vist lige fattet roenvings ide :-)
Genialt :-)
Avatar billede espersen Novice
09. april 2004 - 16:41 #48
thesurfer; så du er foran mig  *G*
Avatar billede thesurfer Nybegynder
09. april 2004 - 16:45 #49
hmm.. men "luk" skal jo blive true, efter at man klikke på et "#" link.. eller hvad ?

Er det her korrekt?
1) siden loades -> JS:luk = true + makelinks() udføres (tilføjes "onclick=luk=false" til <A>-tags
2) man klikker på "bookmark" som !.match("http") + .match("#") -> luk=false

Men, hvad hvis man så klikker på et href="http://..."?  "luk" er jo "false".. eller hvad?
Avatar billede espersen Novice
09. april 2004 - 16:47 #50
hmm.. det er stadig uændret med popup ved refresh eller navigering til en anden side på sitet. Ovenstående JavaScript er includeret på alle sider på sitet.
(og har lige disabled bookmark-funktion for at se om den drillede mig)
Avatar billede thesurfer Nybegynder
09. april 2004 - 16:47 #51
Med andre ord.. Der burde vel være en:
} else { a[nuværende link].onclick = function() {luk=true;}}
Avatar billede roenving Novice
09. april 2004 - 16:54 #52
Næh, ikke helt ...

Når siden loades sættes luk til true ...

Alle links gennemgås, og hvis deres hyperreference hverken indeholder http først eller er lig "#" sættes en onclick-funktion, som sætter luk til false ...

Når der så klikkes på et link, vil der ske:

-- Hvis det er eksternt står luk til true, så popup'en aktiveres ...

-- Hvis det er internt link, vil luk sættes til false og forhindre popup'en ...

-- Hvis linket ikke medfører unload eller reload af siden (f.eks. bookmark-tingen) vil onunload ikke blive udført !-)
Avatar billede espersen Novice
09. april 2004 - 17:01 #53
de interne links står sådan;

<a href="../koekken.php" - og jeg får stadig et popup ved interne navigering ;o|
Avatar billede thesurfer Nybegynder
09. april 2004 - 17:15 #54
Hvad nu hvis man klikker:
1) internt link (luk sættes til false -> ingen popups)
2) eksternt link (luk er jo sat til false -> ?)

?
Avatar billede roenving Novice
09. april 2004 - 17:15 #55
Der må være et-eller-andet, for den virkede fuldstændig efter hensigten hos mig ...

Kan du vise et link (eller en god bid kode ?-)
Avatar billede roenving Novice
09. april 2004 - 17:17 #56
>>thesurfer

Når man klikker på et internt link åbnes en ny side jo, så luk vil forsvinde, for den hører til det window-objekt !-)
Avatar billede espersen Novice
09. april 2004 - 17:17 #57
her er et link : http://biga-aarhus.dk/koekken.php

jeg skal til lidt Påske-tam-tam - så jeg er tilbage ved skærmen i morgen ;o)
Avatar billede roenving Novice
09. april 2004 - 17:23 #58
Du har inkluderet scriptet to gange, så kører det ikke, da browseren ikke ved hvilken udgave den skal foretrække !-)

Script og body-tag må kun forekomme een gang, når du laver den færdige html-kode, så kun i den grundlæggende kode skal det være, i alle andre includes _må_ det ikke være !o]
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
Kurser inden for grundlæggende programmering

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