IE修复 - 条件注释脚本将不会执行

时间:2011-09-20 22:23:03

标签: javascript internet-explorer conditional-comments script-debugging

我正在尝试建立一个网站。除了IE 8及更低版本,我在每个浏览器中都能正确显示它。 IE渲染我的img周围的蓝框也是锚点。我可以通过将border属性设置为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);
}

3 个答案:

答案 0 :(得分:1)

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

a img { border:0; }

答案 1 :(得分:0)

您的条件评论是什么样的?而且,为什么不把它作为一种风格呢?它比使用JavaScript更快并且得到更好的支持更快。

答案 2 :(得分:0)

对于未自行指定的图像,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/