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

Posted

技术标签:

【中文标题】IE 修复 - 条件注释脚本不会执行【英文标题】:IE Fixes - Conditional Comment Script will not execute 【发布时间】:2011-11-21 11:51:15 【问题描述】:

我正在尝试建立一个网站。除了 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);

【问题讨论】:

我认为你不能只通过 css 做img border-style:none; 【参考方案1】:

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

a img  border:0; 

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

IE 对自己没有指定的图像有一个默认的边框样式。这是 IE 的已知痛点。解决此问题的正确方法是向您的页面添加默认 CSS 规则。如果这是第一个 CSS 规则,那么它不会影响您已经设置的任何其他 CSS 规则:

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

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

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

如果您只想修复/更改一张图片,您还可以通过指定内嵌边框在&lt;img&gt; 标签中处理该特定图片:

<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/

【讨论】:

以上是关于IE 修复 - 条件注释脚本不会执行的主要内容,如果未能解决你的问题,请参考以下文章

MySql SQL 脚本的可移植性,MySql 可以执行的注释代码

MySql SQL 脚本的可移植性,MySql 可以执行的注释代码

MySql SQL 脚本的可移植性,MySql 可以执行的注释代码

MySql SQL 脚本的可移植性,MySql 可以执行的注释代码

极其奇怪的行为:当脚本被阻止然后被允许时,IE11 似乎创建了一个不可见的选项卡 - 如何修复它?

如何修复此脚本中的 IE ClearType + jQuery 不透明度问题?