AdTags mit DOM-Methoden
Marcus
- javascript
Hallo liebe Runde,
die AdTags einer Seite sollen aus verschiedenen Gründen mit DOM-Methoden eingebettet werden.
Das folgende Beispiel funktioniert, was den Aufruf der Werbemittel angeht.
Allerdings wird der Inhalt des neu erzeugten SCRIPT-Elementes scheinbar schon evaluiert wenn der Textinhalt angehängt wird - also nicht erst beim finalen Einhängen in den DIV "topBannerAd":
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="topBannerAd"></div>
<script type="text/javascript">
/* <![CDATA[ */
function appendChild(node, text) {
if (null == node.canHaveChildren || node.canHaveChildren) {
node.appendChild(document.createTextNode(text));
} else {
node.text = text;
}
}
var scriptObj = document.createElement("script");
scriptObj.setAttribute('type','text/javascript');
appendChild(scriptObj, "document.write("<script type='text/javascript' src='http://adserver.xy/path/xyz;param=123;'></script>");\n");
document.getElementById("topBannerAd").appendChild(scriptObj);
/* ]]> */
</script>
</body>
</html>
Kann mir jemand verraten, ob/wie sich die Evaluierung des SCRIPT-Inhaltes verhindern, bzw. erst beim Einhängen auslösen lässt?
Relevant ist die Evaluierung innerhalb des DIVs, um die Position des Werbemittels durch den DIV zu gewährleisten.
Vielen Dank für jeden Tipp!
Liebe Grüße, Marcus
Hi,
die AdTags einer Seite sollen aus verschiedenen Gründen mit DOM-Methoden eingebettet werden.
ei, prima.
appendChild(scriptObj, "document.write("<script type='text/javascript' src='http://adserver.xy/path/xyz;param=123;'></script>");\n");
Und was genau ist daran jetzt DOM? Für mich sieht das nicht nach Document Object Model aus, sondern nach Document Unmotivated Manipulation Method. Abkürzen darfst Du's Dir selber.
Relevant ist die Evaluierung innerhalb des DIVs, um die Position des Werbemittels durch den DIV zu gewährleisten.
Wenn das Werbemittel mit document.write() arbeitet - und das tun sie *alle* - dann landet es dort, wo der Rendering-Prozess gerade statt findet. Egal ob Du nun mit DOM arbeitest oder nicht. Ändere also zunächst das Werbemittel, oder sorge dafür, dass der Rendering-Prozess sich nicht an der falschen Stelle des aktuellen Dokuments befindet.
Cheatah
Hi Cheatah
[...]
var scriptObj = document.createElement("script");
scriptObj.setAttribute('type','text/javascript');
scriptObj.setAttribute('src','http://adserver.xy/path/xyz;param=123;');
appendChild(scriptObj);
document.getElementById("topBannerAd").appendChild(scriptObj);
[...]
diese Variante wäre IMO aus Sicht des Werbemittels für einen vergleichbaren Aufruf zuständig (und ich denke auch DOM) - hier treten aber noch Laufzeitfehler auf, ich scheine also falsch zu liegen! :)
Aber: Auch hier wird "an Ort und Stelle" im Script evaluiert, das Werbemittel also - wenn auch noch fehlerhaft - an der "falschen" Stelle angezeigt.
Der Rendering-Prozess sollte aus "logistischen" Gründen am Ende der Seite erfolgen, die leeren DIVs müssen aber bereits im Verlauf der Seite integriert werden, da bestimmte Positionen im Nachhinein kaum noch rekonstruierbar sind.
Gefragt wäre also die "ferngesteuerte" Befüllung leerer DIVs mit dem Werbemittel, ausgeführt vom Ende der Seite aus.
Eine echte Veränderung der Werbemittel fällt wahrscheinlich leider aus - bzw. sollte der zukünftige Mechanismus ähnlich robust sein, wie die rustikale document.write Methode...
Vielen Dank!
Marcus
Hi,
scriptObj.setAttribute('src','http://adserver.xy/path/xyz;param=123;');
besser :-)
Aber: Auch hier wird "an Ort und Stelle" im Script evaluiert,
Die Werbemittel arbeiten also mit document.write().
Der Rendering-Prozess sollte aus "logistischen" Gründen am Ende der Seite erfolgen, die leeren DIVs müssen aber bereits im Verlauf der Seite integriert werden, da bestimmte Positionen im Nachhinein kaum noch rekonstruierbar sind.
Gefragt wäre also die "ferngesteuerte" Befüllung leerer DIVs mit dem Werbemittel, ausgeführt vom Ende der Seite aus.
Ich könnte Dir sagen, wie das lösbar ist, darf es aber leider nicht, weil ich derzeit eine[1] entsprechende Methodik für meinen Arbeitgeber entwickle. Nur soviel: document.write() schreibt immer an die Stelle, an der der Script-Aufruf stattfindet - zeitlich. Eine Verschiebung kann nur danach erfolgen, nicht davor oder währenddessen.
Eine echte Veränderung der Werbemittel fällt wahrscheinlich leider aus
Ja. Wer Werbung macht, hat von den Bedürfnissen anderer keine Ahnung oder interessiert sich nicht dafür. Werbung kommt wie sie kommt, nach dem "friss oder stirb"-Prinzip. Ich frage mich nur, ob das "oder" exklusiv ist ...
Cheatah
[1] Eigentlich sind es drei, aber basierend auf dem selben Prinzip.