PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JavaScript: Vergütungsframe erst nach Kampange laden + Ladezeit Überprüfung



Worka
27.02.2008, 15:33
Hallo
Hier mein JavaScript Code, der den Vergütungsframe erst lädt wenn die Kampange geladen wurde.

Bitte beachten: Ich habe es lokal getestet, habe aber keine Seite wo ich es online testen kann.

Das Script:

1. Frameset.htm
Das Frameset mit zwei frames. Unten wird die Kampange geladen.
Im oberen frame ist erst ein Hinweis, das die Kampange geladen wird.
Ist der untere frame geladen, so wird der Vergütungsframe aufgerufen.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>

<head>
<title>Frameset</title>

<script type="text/javascript">


function start() {
window.frames.Kontrolle.location="Vergütung.htm";
}

</script>

<frameset rows="300,*">
<frame src="warten.htm" name="Kontrolle">
<frame src= "http://www.microsoft.de" name="werbung", onload = "start()">
</frameset>

</head>

<body>

</body>

</html>
2. Warten.htm
Eine Seite ohne Funktion die den Hinweis enthält, dass die Kampange (der untere frame des Framesets) noch geladen wird.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>BannerKlick auf Klammloseseite</title>

</head>

<body>
Bitte warten Sie bis die Kampange vollständig geladen wurde...
</body>

</html>
3. Vergütung.htm
Eine Seite ohne Funktion die die Vergütungsseite darstellt.
Diese Seite wird erst aufgerufen, wenn die Kampange (der untere Frame des Framesets) geladen wurde.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Vergütungsframe</title>
</head>

<body>
Ich bin der Vergütungsframe
</body>
</html>
*Edit*
Da diese Art User mit deaktiviertem JavaScript von der Vergütung ausschliest (wie jpwfour schon richtig bemerkte), hier noch eine Version, die User ohne JavaScript auch vergütet.
Bei Usern die JavaScript deaktiviert haben wird der Vergütungsframe aber nicht erst nach der Kampange aufgerufen.

1.1 Frameset.htm
Das Frameset. Im vergleich zur Version vorher, sind hier 3 Frames, von denen einer aber 0 Pixel gross ist. (der ganz obere).
Der 0 Pixel Frame wird benötigt da er kein Ziehl lädt und somit sofort sein Onload Event auftritt.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>

<head>
<title>Frameset Test</title>

<script type="text/javascript">

function start() {
window.frames.Kontrolle.location="Vergütung.htm";
}

function Change() {
window.frames.Kontrolle.location="warten.htm";
}

</script>

<frameset rows="0,30,*">
<frame src="" name="Start", onload = "Change()">
<frame src="Vergütung.htm" name="Kontrolle">
<frame src= "http://www.microsoft.de" name="werbung", onload = "start()">
</frameset>

</head>

<body>

</body>

</html>
Da es nicht schön ist, wenn die Kampange ewig lädt und der Vergütungsframe deswegen nicht erscheint, hier noch eine Version, die die Ladezeit überprüft.
Wenn die Maximal erlaubte Ladezeit überschritten wurde, kann eine Aktion ausgeführt werden. (Melden, Vergütungsframe trotzdem laden oder...)
Auch hier werden User mit und ohne JavaScript vergütet, eine Vergütung nur mit JavaScript ist natürlich auch möglich.

1.2 Frameset.htm
Das Frameset. Framebrecher und Ladezeit Test sind hier eingebaut.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>

<head>
<title>Frameset Test</title>


<script type="text/javascript">
var Ladetest;
var MaxLadezeit=30;
var Count=0;

//Vergütungsframe laden
function start() {
window.clearInterval(Ladetest);
window.frames.Kontrolle.location="Vergütung.htm";
}

//Vergütungsframe erst mal nicht laden
//solange Kampange noch lädt
function Change() {
window.frames.Kontrolle.location="warten.htm";
Ladetest = window.setInterval("Laden()", 1000);
}

//Überprüfung der Ladezeit der Kampange
function Laden() {
Count++;
if (Count>MaxLadezeit) {
window.clearInterval(Ladetest);
//Hier die AKtion wenn ladezeit überschritten
//z.B. Kampange melden oder Vergütungsframe trotzdem
//laden oder...
}
}

</script>

<frameset rows="0,30,*">
<frame src="" name="Start", onload = "Change()">
<frame src="Vergütung.htm" name="Kontrolle">
<frame src= "http://www.a3union.com" name="werbung", onload = "start()">
</frameset>

</head>

jpwfour
27.02.2008, 17:06
dies ist aber eine methode die user mit deaktiviertem javascript von der vergütung ausschließt!!

um diese auch an der vergütung teilhaben zu lassen, sollte man evtl im ersten frame doch die vergütung.htm notieren, aber diesen wert des src-attributes des frames durch javascript vorher ändern, dann werden aufrufe ohne js ganz normal vergütet (muss man ahlt in kauf nehmen, dass die kampagne doch nicht ganz geladen wurde), und aufrufe mit js werden erst vergütet, nachdem die kampagne ganz geladen wurde.

Worka
27.02.2008, 17:14
Stimmt schon aber da die meissten Werbenetzwerke so wie ich gehört habe JS vorraussetzen, ist es doch OK wenn man selber auch JS zur Vergütung vorraussetzt.

Welcher Seitenbetreiber will schon User vergüten, die nur unvergütete klicks oder Views oder sonstwas produzieren?

*Edit*
Hab es mal so gändert, dass nun auch ohne JS vergütet wird.