IE修复-条件注释脚本将无法执行

IE Fixes - Conditional Comment Script will not execute

本文关键字:执行 脚本 注释 修复 条件 IE      更新时间:2023-09-26

我正在尝试建立一个网站。我有它在每个浏览器中正确显示,除了IE版本8和更低。IE渲染我的img周围的蓝色框,也是锚。我可以通过将边界属性设置为none来摆脱这种情况,但我想用javascript来做。我可以让我的Javascript在条件注释中执行。

try
{
var ancs = document.getElementsByTagName("a");
    for(var i=0; i<ancs.length; i++)
    {
        if(ancs[i].childNodes[0].nodeName == "IMG")
        {
            //Set border property to none
        }
    }
}
catch(err)
{
alert(err);
}

我很抱歉没有回答javascript部分。但是你应该用CSS这样做:

a img { border:0; }

你的条件注释是什么样子的?为什么不把它作为一个样式呢?它将比使用JavaScript更快,并且得到更好的支持。

对于没有指定边框样式的图片,IE有默认的边框样式。这是IE的一个众所周知的痛苦。解决这个问题的正确方法是在页面中添加默认的CSS规则。如果这是第一个CSS规则,那么它不会影响你已经设置的任何其他CSS规则:

<style type="text/css">
    img {border: none;}
</style>

或者如果你真的只想影响<a>标签中的图像,你可以使用这个CSS:

<style type="text/css">
    a img {border: none;}
</style>

如果您只想修复/更改一个图像,您还可以通过指定内联边框在<img>标记中处理该特定图像:

<img border="0" src="xxxx">

如果你真的想用javascript来做这件事,你可以在页面加载后放置这段代码,或者只在页面加载后调用它:

function nukeImageBorders() {
    // assumes all affected images have an <a> tag as their parent
    var list = document.getElementsByTagName("img");
    for (var i = 0, len = list.length; i < len; i++) {
        if (list[i].parentNode.tagName.toLowerCase() == "a") {
            list[i].style.border = "none";
        }
    }
}

你可以在这里看到代码在IE中工作:http://jsfiddle.net/jfriend00/cnEhY/