2009-07-02 9 views
12

Quiero tener un ancla con una altura y un ancho específicos.IE: Solo se puede hacer clic en la parte de un ancla.

No hay texto en él, ya que está destinado a colocarse en frente de un área determinada de la página.

Aquí está el código:

<a href="/" style="width:370px;height:80px;display:block;position:absolute;"></a> 

Está funcionando muy bien en todo menos en IE6 y IE7. Si agrego un borde, puedo ver que el ancla tiene el tamaño correcto, pero si trato de hacer clic en él, , solo se hará clic en la parte superior.

No sé por qué lo está haciendo. Traté de agregar un onclick incluso con una alerta, y lo mismo, es imposible hacer clic en la parte inferior del ancla.

Es realmente extraño, ¿le ha pasado esto a alguien antes? Cualquier cosa ayudará.

+0

¿Delante de un área determinada de la página? Si desea que se pueda hacer clic en un área determinada de la página, todo esto va mal al usar una etiqueta de ancla no semántica. –

+0

Este es un truco para un sitio web heredado ... – marcgg

Respuesta

15

En versiones anteriores de IE, no es posible registrar el evento onclick en los elementos de nivel de bloque. En cambio, IE aplica el onclick al texto o elementos en línea dentro del bloque.

He encontrado que poner transparent image dentro del ancla que es del mismo tamaño que el ancla completa registrará el onclick.

<a href="/" style="width:370px;height:80px;display:block;position:absolute;"> 
    <img src="Transparent.gif" style="width: 370px; height: 80px"/> 
</a> 
+3

No usé exactamente su código, lo hice: marcgg

+0

Esta corrección me salvó la piel, gracias. IE10 todavía tiene este problema cuando se combina con la rareza del índice Z. – Amalgovinus

0

podría ser que este es un problema de índice Z con otro div/span/etc.

+0

Solo traté de poner un índice Z de 9999, pero no cambió nada. También verifiqué si había algún otro div encima, pero no se ve así. – marcgg

2

Dado que este enlace está completamente posicionado, me parece que hay otro bloque que se superpone parcialmente ocultando la mitad del evento de clic.

+1

tenía el mismo problema, agregué un z-index a mi elemento y solucioné el problema. thx – filsterjisah

2

Cualquier imagen colocada en el fondo del ancla, y luego posicionada fuera de la vista arreglará su problema para IE6 e IE7. No necesita tener una imagen del tamaño completo del ancla según lo sugerido.

Esto significa que puede usar un sprite u otra imagen que ya se está cargando en la página para guardar otra llamada a su servidor.

<a style="position:absolute; z-index:2; background:url(/images/your-sprite.gif) -9999px no-repeat;" href="#">Your anchor</a> 
18

otra manera de manejar este problema es un poco "truco/solución", cuando el elemento de bloque tiene un fondo todo color está muy bien, ya que te aspecto. hacer uso de algo como esto:

a { 
    .. 
    background-color: white; 
    opacity: 0; 
    filter: alpha(opacity=0); 
    .. 
} 
+1

Incluso IE9 tiene el mismo problema y lo solucionó usando 'background-color' – manikanta

+1

Probablemente, la solución más elegante. – bancer

Cuestiones relacionadas