Popup einblenden bei jedem 100. User

Diese Anforderung können wir durch ein Javascript realisieren, das wir onload() im Body aufrufen. Hier findet Ihr eine kurze Beschreibung, wie dies zu realisieren ist.
Im Script wird eine Zufallszahl zwischen 1 und 100 ermittelt, falls diese einen bestimmten Wert hat (in unserem Fall die 2), wird eine Aktion ausgeführt:

function handleSurvey() {
var z1 = 100;
var z = Math.ceil(Math.random() * z1);

if (z == 2) {
//Umfrage einblenden Beginn
function openSurvey() {
var popupURL = „http://www.wasauchimmer.de/umfrage/“;
window.open(popupURL,““,“width=800,height=600,left=100,top=100″);
}
openSurvey();
//Umfrage einblenden Ende
}

}

Bei dieser Methode ist aber nicht sichergestellt, dass genau jeder 100. User die Einblendung bekommt, denn es wird ja quasi „gewürfelt“ im Script, wir können also die Anforderung nur ungefährt erfüllen.
Genauer können wir das Problem lösen, wenn wir die Möglichkeit haben, dynamische Seiten auszuliefern, hier am Beispiel von Coldfusion; wir zählen dazu die Sessions in einem Array im Application-Scope:

<!— wenn es das Array noch nicht gibt: Erzeugen —>
<cfif NOT StructKeyExists(application, ‚userSessions‘)>
<cflock scope=“APPLICATION“ type=“EXCLUSIVE“ timeout=“0″>
<cfset application.userSessions=ArrayNew(1)/>
</cflock>
</cfif>

<!— wenn die aktuelle session noch nicht im Array ist: Hinzuzählen —>
<cfif NOT application.userSessions.contains(session.urlToken)>
<cflock scope=“APPLICATION“ type=“EXCLUSIVE“ timeout=“0″>
<cfset ArrayAppend(application.userSessions, session.urltoken)/>
</cflock>
</cfif>

<!— wenn wir 100 Elemente haben: Einblenden —>
<cfif NOT ArrayLen(application.userSessions) MOD 100>
<script language=“JavaScript“>

<!–

function openSurvey() {
var popupURL = http://www.domain.de/umfrage/;
window.open(popupURL,““,“width=800,height=600,left=100,top=100″);
}

openSurvey();

// –>
</script>

<!— ggf. das Array löschen, falls wir es nicht für andere Zwecke brauchen —>

<cflock scope=“APPLICATION“ type=“EXCLUSIVE“ timeout=“0″>
<cfset application.userSessions=ArrayNew(1)/>
</cflock>
</cfif>

Schreibe einen Kommentar