2010-08-12 9 views
10

? Así que una empresa de seguimiento de clientes necesita un enlace para disparar y estaba en la etiqueta de cabecera ... ¿se disparará?¿Se ejecutará una etiqueta de imagen html en la etiqueta de cabecera

<head> 
    <img width=1 height=1 src='http://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=4426&DetailDescription=935626&transactionamount=1&SICustTransType=19172&jscript=0&x10=goog&x9=1&x8=935626&x7=777+665-9999&x6=jones&x5=matt&x4=&x3=Camarillo&x2=Oxnard%2C+CA+Metro+Area&x1=Hidden+Springs&n1=Austin--Bedroom--austin_1_bedroom_apartments-P'> 
</head> 
+2

Sólo por el bien de la precisión ... HTML no se ejecuta, que se interpreta. – nico

Respuesta

13

No debería. La especificación dice: agentes

usuario por lo general no hacen elementos que aparecen en la cabeza cuando contenido.

Véase el spec

Pero navegadores pueden hacer lo que quieren.

Agregado:

Es un área de suelta en la especificación. Por ejemplo, un navegador podría:

  • generar el elemento
  • Ignorar el elemento
  • cargar la imagen de su servidor, pero no hacerla
  • O algo más

... y el navegador sería compatible.

Así ver lo que sus navegadores favoritos hacen y luego usar la información como desee ...

5

Sí. Probé en FireFox y Chrome y fue solicitado.

+2

NB: Hacky hacky hacky – meawoppl

2

navegadores Web de hecho van a cargar la imagen. Sospecho que su ubicación en el documento head se debe a que el atributo src no carga una imagen real, por lo que aparecerá como una imagen rota en la página web. Dado que está en el head, se llamará pero no se representará en la página.

En efecto, eso actúa como una llamada de script asincrónica, porque el navegador realizará una solicitud GET para la URL del atributo src de esa imagen al cargar la página.

5

Eso dependería del navegador. El código es incorrecto y no hay un estándar sobre cómo manejar el código incorrecto, por lo que depende de cada navegador tratar de encontrarle sentido.

Creo que la mayoría de los navegadores cambiarían a un modo de sopa de etiquetas y mostrarían lo que pudieran, pero algunos navegadores podrían ignorar la imagen.

También está la cuestión de lo que hace el código incorrecto al resto de la página. Si el navegador cambia la forma en que se analiza el código, puede tener efectos negativos en el código que es correcto.

1

La mayoría de los navegadores no se preocupan por las reglas, por lo que funcionará. Pero si quieres cumplir con los estándares, no deberías hacer esto. (Al menos en XHTML, no es válido colocar una etiqueta <img> dentro de <head>.)

1

Técnicamente, sí ... pero es mucho mejor simplemente ponerlo en una llamada HTML/JS ..

HTML

<body onload="triggerLink('4426');"> 

JavaScript

function triggerLink(var1){ 
    var receiveReq = getXmlHttpRequestObjectShipping(); 
    var url= 'http://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=' + var1; 

    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { 
     receiveReq.open("POST", url, true); 
     receiveReq.onreadystatechange = handleLink; 
     receiveReq.send(null); 
    } 
} 
function handleLink(){ 
    //Do This when request finished 
} 

Puede añadir variables para la función "tiggerLink", así que pasar el resto de sus parámetros de URL.

0

Sugiero usar una etiqueta <script> en lugar de una etiqueta <img>. Entonces no hay dudas de si un navegador solicitará la url. Solo asegúrese de que no devuelve nada que pueda causar un error de script.

+1

Pero desea hacer un seguimiento del usuario con JS desactivado –

0

estaría más inclinado a usar una link y especifique como hoja de estilo:

<link rel="stylesheet" type="text/css" src="http://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=4426&DetailDescription=935626&transactionamount=1&SICustTransType=19172&jscript=0&x10=goog&x9=1&x8=935626&x7=777+665-9999&x6=jones&x5=matt&x4=&x3=Camarillo&x2=Oxnard%2C+CA+Metro+Area&x1=Hidden+Springs&n1=Austin--Bedroom--austin_1_bedroom_apartments-P">

Todos deben estar bien si TransactionTracking.aspx rendimientos contenido vacío.

2

Sí, el navegador intentará cargar el recurso img, pero por razones que no son inmediatamente obvias.

Asumiendo que este es servido como text/html, cuando analizador del navegador ve el elemento <img> se creerá que está encontrando el contenido visualizable y simplemente inferir las </head> y <body> etiquetas (recuerde, estos son opcionales en HTML), por lo que la <img> no está realmente en el elemento principal, sino en el elemento del cuerpo.

Si usa firebug u otro medio para inspeccionar el DOM como http://software.hixie.ch/utilities/js/live-dom-viewer/, puede ver usted mismo que este es el caso.

Dado que el img está en el cuerpo, el navegador no lo ve como diferente de cualquier elemento <img> normal.

0

La mayoría de los navegadores modernos moverán la cabeza y el cuerpo para dejar cualquier contenido visible dentro del cuerpo. (Puedes ver eso en el inspector). Parece tan confiable que al menos estará cargado, que Google lo usa como un sistema de seguimiento de píxeles dentro de una etiqueta noscript, todo dentro del encabezado (donde recomiendan colocar todo el código, junto con el script) en caso de que javascript sea No soportado.

0

En lugar de establecer width=1 height=1, establecería style="display:none" para evitar que se reproduzca y afecte al diseño.

Todos los navegadores solicitarán la imagen en el encabezado incluso con display:none.

He comprobado en:

  • MS borde: 13
  • IE: 8, 9, 10 y 11
  • Safari: 9 y 6
  • FF: 25, 47 y 49
  • cromo: 51
Cuestiones relacionadas