Quiero crear un código JS simple que cree un elemento de imagen en el fondo y no muestre nada. El elemento de imagen llamará a una URL de seguimiento (como Omniture) y debe ser simple y robusto y funcionar solo en IE 6 = <. Aquí está el código que tengo:
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);
¿Es esta la forma más sencilla pero más sólida (sin errores) de hacerlo?
No puedo usar un marco como jQuery. Debe estar en JavaScript simple.
javascript
dhtml
Pete
fuente
fuente
Respuestas:
px
es solo para CSS. Utilizar cualquiera:para establecer un ancho a través de HTML, o:
para configurarlo a través de CSS.
Tenga en cuenta que las versiones antiguas de IE no crean una imagen adecuada con
document.createElement()
, y las versiones antiguas de KHTML no crean un Nodo DOM adecuado connew Image()
, por lo que si desea ser totalmente compatible con versiones anteriores, use algo como:También tenga cuidado con
document.body.appendChild
si el script puede ejecutarse ya que la página está en medio de la carga. Puede terminar con la imagen en un lugar inesperado o un extraño error de JavaScript en IE. Si necesita poder agregarlo en el tiempo de carga (pero después de que el<body>
elemento haya comenzado), puede intentar insertarlo al comienzo del cuerpo usandobody.insertBefore(body.firstChild)
.Para hacer esto de manera invisible pero aún así tener la imagen cargada en todos los navegadores, puede insertar una posición absolutamente fuera de la página
<div>
como el primer hijo del cuerpo y poner cualquier imagen de seguimiento / precarga que no desee que sea visible allí. .fuente
new Image()
funcionaría mejor en todas las circunstancias?fuente
fuente
console.log
entre cada par de líneas, para que sepa exactamente qué línea la está congelando.jQuery:
Descubrí que esto funciona incluso mejor porque no tienes que preocuparte de que HTML escape nada (lo que debería hacerse en el código anterior, si los valores no estaban codificados). También es más fácil de leer (desde la perspectiva de JS):
fuente
<img ... />
en DOM, hazlo con innerHTML entonces. Simplemente no entiendo esto: /Solo en aras de la integridad, sugeriría usar la forma InnerHTML también, aunque no la llamaría la mejor manera ...
Por cierto, innerHTML no es tan malo
fuente
Camino más corto:
fuente
¿Está permitido utilizar un marco? jQuery y Prototype facilitan este tipo de cosas. Aquí hay una muestra en Prototype:
fuente
simplemente podrías hacer:
Sencillo :)
fuente
Solo para agregar un ejemplo completo de HTML JS
fuente
Como otros señalaron, si se le permite usar un marco como jQuery, lo mejor que puede hacer es usarlo, ya que es muy probable que lo haga de la mejor manera posible. Si no está autorizado a utilizar un marco, supongo que manipular el DOM es la mejor forma de hacerlo (y, en mi opinión, la forma correcta de hacerlo).
fuente
Este es el método que sigo para crear un bucle de etiquetas img o una sola etiqueta como desee
o
fuente