图像地图区域周围出现不需要的边框

5

我正在使用一个带有圆形区域的图像映射。问题是在IE7中该区域周围会出现不必要的边框。而在FF和Chrome以及IE8/IE9中则没有这个问题。

我尝试为图像添加border="0",为锚点添加CSS属性:

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

但是没有起作用。

我还尝试在标签中添加IE修复程序 onfocus="blur();"。这解决了IE中的问题,但现在FF得到了边框。 搜索了很多并找到了这个修复程序,它说它将解决使用IE修复程序时FF的问题。

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

但是遗憾的是,即使这样也没有解决问题。我正在使用FF 9.0.1版本。非常感谢您的任何帮助。提前致谢。

866个回答和0%的采纳率?你找到解决方案了吗? - benedict_w
是的,因为没有一个解决方案。检查所有答案以获取解决方法。 - Abhidev
4个回答

3
img{border:none;}

这是IE版本的修复方法:

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

试试这个,希望能帮到你!!!


我已经尝试过了...在使用IE修复程序的图像映射中对我无效。 - Abhidev
我认为你提供的脚本是用于在IE6及以下版本中纠正PNG图像透明度的,而我面临的问题与使用图像地图有关。 - Abhidev
我在IE6中的png透明度没有问题...请再仔细检查一下查询。谢谢。 - Abhidev

3
这是解决方案:
onclick="blur()" onfocus="navigator.appName == 'Microsoft Internet Explorer' ? blur() : null"

我尝试了很多很多(边框,轮廓等)的东西,只有这个起作用了,谢谢。 - Francisco Corrales Morales

2
您可以使用条件注释(更多信息请参见此处)+ 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(); });
}

1
找到了解决这个问题的方法... 可能不是一个好的方法。通过使用JS浏览器检测,我们可以应用IE修复程序,如下所示,这不会对其他浏览器(在我的情况下是FF)造成问题。
if (navigator.userAgent.toLowerCase().indexOf('msie') != -1) {
    document.getElementsByTagName('area')[0].onfocus = function () {this.blur();};
   }

如果有人找到更好的解决方案,请在这里发布。谢谢。


Abhidev,你可以使用条件注释来检测IE是否正在运行,更多信息请参见这里。我将添加一个新的答案作为示例。 - bdurao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接