Aber es ließe sich das mit dem Timeout über eine fsockopen() Fuktion realisieren, oder mache ich einen Denkfehler?
fsockopen() ist Server-Side, es geht hier aber um Javascript (Client-Side).
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Aber es ließe sich das mit dem Timeout über eine fsockopen() Fuktion realisieren, oder mache ich einen Denkfehler?
Schon klar, aber ich kann doch per fsockopen() eine Verbindung aufbauen zum Adserver und wenn dieser nach x Sekunden false liefert, den nächsten Banner anzeigen lassen.fsockopen() ist Server-Side, es geht hier aber um Javascript (Client-Side).
<body>
....
<div id="banner1" />
...
CONTENT
....
<div id="banner2" />
...
CONTENT
....
<div id="banner3" />
...
<script type="text/javascript">
$(document).ready(function() {
var response = $.ajax.get(url: 'ajax.php');
$(#banner1).content(response(banner[id=1]));
$(#banner2).content(response(banner[id=2]));
// ...
});
// ajax.php
header("content-type: text/xml; charset=UTF-8");
$fp = fsockopen("example.com", 80, $foo, $bar, 1);
if(!$fp) {
// 1 sec: Timeout
echo "<banners> <banner id=\"1\"> DEFAULT </banner> ...";
exit;
}
// Daten holen
$banner = fgets($fp);
echo "<banners> <banner id=\"1\"> $banner</banner> ...";
Wenn das aber alles zum Ende gemacht wird, kanns doch egal sein, wer danach noch alles gefragt werden muss.[...] JS-Tags die dann wiederum X andere JS-Tags von versch. Servern aufrufen und ineinander verschachteln. Es würde also u.U. gar nicht genügen "den AdServer" zu checken, wenn das JS wiederum (im selben Dokument) andere Server (von Endkunden) für die Grafiken kontaktiert - und da ggf. auch warten muss.
Dann stell halt mal entsprechend um, wenn das Probleme vermeidet.Hätte ich einfach BannerURL/KlickURL wäre das alles kein Problem.
Genau.Ich geh mal davon aus, wenn ich ein script-Tag nachträglich in den DOM-Tree einhänge, der Useragent dieses dann auch abruft, oder?
Jede Menge - leider. Und ich muss mich drauf verlassen, dass die dann valides HTML bauen, sonst geht meine Seite kaputt.document.write()s drinnen sind
Es gibt vielleicht noch ne andere Lösung Ich guck heut Abend mal in meinen CodearchivenEinzige Lösung: IFrames oder un-multimediale Bannerurl/Klickurl.
Ich geh mal davon aus, wenn ich ein script-Tag nachträglich in den DOM-Tree einhänge, der Useragent dieses dann auch abruft, oder?
Wenn du per JavaScript ein <script>-Tag in den Code schreibst wird dieser vom Client nicht beachtet. Man muss da schon mit eval() arbeiten.. Saß selbst schon mal vor diesem Problem.
Mit document.write/innerHTML reinschreiben, oder mit DOM-Methoden?
So schreibt es zumindest der XHTML-Standard vor, deswegen is ja document.write() verboten. innerHTML is ja auch nix anderes.Sollte das über DOM-Methoden gehen, oder wie?
var tag = document.createTag("script");
tag.appendAttribut(document.createAttribut("type", "text/javascript"));
document.getElementById("before").insertAfter(tag);
So schreibt es zumindest der XHTML-Standard vor, deswegen is ja document.write() verboten. innerHTML is ja auch nix anderes.
Mit jQuery dürfte es etwas einfacher gehen.
$('#before').after($('<script type="text/javascript" />'));
// asynchrone Einbindung von Google Analytics
$(document).ready(
function() {
$.ajax({
type: 'GET',
url: 'https://www.google-analytics.com/ga.js',
success:
function() {
var pageTracker = _gat._getTracker('UA-XXXXXXX-X');
pageTracker._trackPageview();
},
dataType: 'script',
cache: true
});
}
);
Ah, gefunden:Es gibt vielleicht noch ne andere Lösung Ich guck heut Abend mal in meinen Codearchiven
<object data="googleadsense.php?size=728x90" type="text/html">Werbung</object>
<body>
<div id="banner1" />
<div id="banner2" />
<script type="text/javascript">
$(window).load(function() {
$('#banner1').html('<script .....></script>');
$('#banner2').html('<script .....></script>');
});
wie wäre es hiermit:
[...]
da sollte es meines wissens keine Probleme geben.
oder eben per DOM-Ready die JavaScript-Tags async machen, dann blocken die nicht mehr das Laden.
Hmm, man könnte die Funktion ja durch eine andere ersetzen.