2012-01-27 3 views
5

Я использую карту изображений с круговой областью. Проблема в том, что я получаю нежелательную границу вокруг области в IE7. Эта граница не отображается в FF и Chrome, а также в IE8/IE9.Нежелательная граница вокруг области карты изображения

Я попытался добавить границу = «0» к изображению, CSS свойства для якорей

т.е.
a{ 
border:none !important; 
outline:none !important; 
} 

, но не работает.

Я также попытался добавить исправление IE onfocus = "blur();" в теге. Это решило проблему в IE, но тогда FF теперь получил границу. Искал много и пришел через это исправление, в котором говорится, что он исправит проблему для FF, когда используется исправление IE.

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

Но, к сожалению, даже это не сработало. Я использую FF 9.0.1.

Любая помощь будет принята с благодарностью. Заранее спасибо.

+0

866 респ и 0% принимаются ответы ?! Вы нашли решение? –

+0

да ... coz нет ни одного решения. Проверьте все ответы на обходные пути. – Abhidev

ответ

3
img{border:none;} 

и это исправление для версий т.е.

<!--[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]--> 

попробовать эту надежду, что помогает !!!

+0

попробовали это уже ... не работали для меня в случае карты изображения с исправлением IE. – Abhidev

+0

- то есть 6.0 ??? ok помещает скрипт в заголовок ... – Madhu

+0

Ну, я думаю, что сценарий, который вы указали, предназначен для исправления прозрачности изображения Png в IE6 и ниже, проблема, с которой я сталкиваюсь, связана с использованием карт изображений. – Abhidev

1

Хорошо нашел способ решить эту проблему ... это, вероятно, не очень хороший способ. С помощью JS обнаружения браузера можно применить исправление IE следующим образом, который не будет создавать проблемы для других браузеров (FF в моем случае)

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

Ну пожалуйста, если кто-нибудь найдет лучшее решение затем сделать пост здесь. Благодарю.

+0

Abhidev, вы можете использовать условные комментарии, чтобы определить, работает ли IE, больше информации [здесь] (http://www.quirksmode.org/css/condcom.html). В качестве примера добавим новый ответ. – bdurao

2

Вы можете использовать условные комментарии (подробнее 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

да определенно мы можем использовать условные комментарии. :) – Abhidev

3

Это решение:

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

Я пробовал много много (граница, контур, ..) вещи, и только это сработало, спасибо –

Смежные вопросы