2012-01-27 15 views
5

Sto utilizzando una mappa immagine con un'area circolare. Il problema è che ottengo un bordo indesiderato intorno all'area in IE7. Questo bordo non appare in FF e Chrome e anche in IE8/IE9.Bordo indesiderato intorno all'area della mappa immagine

Ho provato ad aggiungere border = "0" per l'immagine, proprietà CSS per i tasselli cioè

a{ 
border:none !important; 
outline:none !important; 
} 

ma non ha funzionato.

Ho anche provato ad aggiungere la correzione per IE onfocus = "blur();" nel tag. Questo ha risolto il problema in IE, ma in quel momento FF ha ottenuto il confine. Ho cercato molto e ho trovato questa soluzione che diceva che risolverà il problema per FF quando viene utilizzata la correzione IE.

#parent_div *:active, #parent_div *:focus { overflow-x:hidden; outline:none; } 

Ma purtroppo anche questo non ha funzionato. Sto usando FF 9.0.1.

Qualsiasi aiuto sarà molto apprezzato. Grazie in anticipo.

+0

866 rep e 0% accettato risposte ?! Hai trovato una soluzione a questo? –

+0

sì ... perché non c'è una soluzione. Controlla tutte le risposte per soluzioni alternative. – Abhidev

risposta

3
img{border:none;} 

e questa è la correzione per esempio le versioni

<!--[if lte IE 6]> 
<script type="text/javascript"> 
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6. 
{ 

    var arVersion = navigator.appVersion.split("MSIE") 
    var version = parseFloat(arVersion[1]) 
    if ((version >= 5.5) && (document.body.filters)) 
    { 
     for(var i=0; i<document.images.length; i++) 

     { 
     var img = document.images[i] 
     var imgName = img.src.toUpperCase() 
     if (imgName.substring(imgName.length-3, imgName.length) == "PNG") 
     { 
      var imgID = (img.id) ? "id='" + img.id + "' " : "" 

      var imgClass = (img.className) ? "class='" + img.className + "' " : "" 
      var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' " 

      var imgStyle = "display:inline-block;" + img.style.cssText 
      if (img.align == "left") imgStyle = "float:left;" + imgStyle 
      if (img.align == "right") imgStyle = "float:right;" + imgStyle 

      if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle 
      var strNewHTML = "<span " + imgID + imgClass + imgTitle 
      + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" 

      + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" 
      + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
      img.outerHTML = strNewHTML 

      i = i-1 
     } 
     } 
    }  
} 
window.attachEvent("onload", correctPNG); 
</script> 
<![endif]--> 

provare questa speranza aiuta !!!

+0

hanno già provato questo ... non funziona per me in caso di mappa immagine con la correzione IE su. – Abhidev

+0

è quello cioè 6.0 ??? ok metti lo script nell'intestazione ... – Madhu

+0

Beh, penso che lo script che hai dato sia per correggere la trasparenza dell'immagine Png in IE6 e sotto, il problema che sto affrontando è legato all'uso delle mappe immagine. – Abhidev

1

Ben trovato un modo per risolvere questo problema ... che probabilmente non è un buon modo per andare. Utilizzando js rilevamento del browser si può applicare la correzione IE come segue che non causerà problemi per altri browser (FF nel mio caso)

if (navigator.userAgent.toLowerCase().indexOf('msie') != -1) { 
    document.getElementsByTagName('area')[0].onfocus = function() {this.blur();}; 
    } 

Bene per favore, se qualcuno trova una soluzione migliore allora non postare qui. Grazie.

+0

Abhidev, è possibile utilizzare i commenti condizionali per rilevare se IE è in esecuzione, maggiori informazioni [qui] (http://www.quirksmode.org/css/condcom.html). Andando ad aggiungere una nuova risposta come esempio. – bdurao

2

È possibile utilizzare i commenti condizionali (ulteriori informazioni here) + jQuery.

HTML:

<!-- 
    "old-ie" targets IE7 or less 
    "ie8" targets IE8 
    "ie" targets IE8+ 
--> 

<!--[if lt IE 8]> <html lang="en" class="old-ie"> <![endif]--> 
<!--[if IE 8]> <html lang="en" class="ie ie8"> <![endif]--> 
<!--[if gt IE 8]> <html lang="en" class="ie"> <![endif]--> 
<!--[if !IE]><!--> <html lang="en"> <!--<![endif]--> 

<head> 
... 
</head> 

<body> 
    <a href="#link"> 
     <img src="/img/image.jpg" /> 
    </a> 
</body> 

</html> 

jQuery:

// we first check if current browser is IE7 or older, than apply our "hack" 

if (jQuery('html').is('.old-ie') === true) { 
    jQuery('a').focus(function() { jQuery(this).blur(); }); 
} 
+0

sì sicuramente possiamo usare i commenti condizionali. :) – Abhidev

3

Questa è la soluzione:

onclick="blur()" onfocus="navigator.appName == 'Microsoft Internet Explorer' ? blur() : null" 
+0

Ho provato molti (bordi, contorni, ..) cose, e solo questo ha funzionato, grazie –

Problemi correlati