Ich möchte ein einfaches Stück JS-Code erstellen, das im Hintergrund ein Bildelement erstellt und nichts anzeigt. Das Bildelement ruft eine Tracking-URL (z. B. Omniture) auf und muss einfach und robust sein und nur in IE 6 = <funktionieren. Hier ist der Code, den ich habe:
var oImg = document.createElement("img");
oImg.setAttribute('src', 'http://www.testtrackinglink.com');
oImg.setAttribute('alt', 'na');
oImg.setAttribute('height', '1px');
oImg.setAttribute('width', '1px');
document.body.appendChild(oImg);
Ist dies der einfachste, aber robusteste (fehlerfreie) Weg, dies zu tun?
Ich kann kein Framework wie jQuery verwenden. Es muss in einfachem JavaScript sein.
javascript
dhtml
Pete
quelle
quelle
Antworten:
px
ist nur für CSS. Benutze das eine oder das andere:um eine Breite über HTML festzulegen, oder:
um es durch CSS einzustellen.
Beachten Sie, dass alte Versionen von IE kein richtiges Image erstellen
document.createElement()
und alte Versionen von KHTML keinen richtigen DOM-Knoten mit erstellen.new Image()
Wenn Sie also vollständig abwärtskompatibel sein möchten, verwenden Sie Folgendes:Seien Sie auch etwas vorsichtig,
document.body.appendChild
wenn das Skript ausgeführt wird, da sich die Seite gerade im Laden befindet. Sie können mit dem Bild an einem unerwarteten Ort oder einem seltsamen JavaScript-Fehler im IE enden. Wenn Sie es beim Laden hinzufügen müssen (aber nachdem das<body>
Element gestartet wurde), können Sie versuchen, es am Anfang des Körpers mit einzufügenbody.insertBefore(body.firstChild)
.Um dies unsichtbar zu tun und das Bild dennoch in allen Browsern zu laden, können Sie
<div>
als erstes Kind des Körpers ein absolut positioniertes Bild außerhalb der Seite einfügen und alle Tracking- / Preload-Bilder einfügen , die dort nicht sichtbar sein sollen .quelle
new Image()
allen Umständen am besten funktionieren?quelle
quelle
console.log
zwischen jedem Zeilenpaar, damit Sie genau wissen, welche Zeile es einfriert.jQuery:
Ich habe festgestellt, dass dies noch besser funktioniert, da Sie sich keine Sorgen machen müssen, dass HTML irgendetwas entgeht (was im obigen Code erfolgen sollte, wenn die Werte nicht fest codiert waren). Es ist auch einfacher zu lesen (aus JS-Sicht):
quelle
<img ... />
in DOM einfügen , machen Sie es dann mit innerHTML . Ich verstehe das einfach nicht: /Der Vollständigkeit halber würde ich vorschlagen, auch den InnerHTML-Weg zu verwenden - auch wenn ich es nicht den besten Weg nennen würde ...
InnerHTML ist übrigens gar nicht so schlecht
quelle
Kürzester Weg:
quelle
Dürfen Sie ein Framework verwenden? jQuery und Prototype machen so etwas ziemlich einfach. Hier ist ein Beispiel in Prototype:
quelle
Sie könnten einfach tun:
Einfach :)
quelle
Nur um ein vollständiges HTML-JS-Beispiel hinzuzufügen
quelle
Wie andere betonten, ist es am besten, wenn Sie ein Framework wie jQuery verwenden dürfen, es zu verwenden, da es dies höchstwahrscheinlich bestmöglich tun wird. Wenn Sie kein Framework verwenden dürfen, ist die Manipulation des DOM meiner Meinung nach der beste Weg, dies zu tun (und meiner Meinung nach der richtige Weg, dies zu tun).
quelle
Dies ist die Methode, die ich befolge, um eine Schleife von img-Tags oder ein einzelnes Tag nach Ihren Wünschen zu erstellen
oder
quelle