Исправления IE - скрипт условного комментария не будет выполнен - PullRequest
0 голосов
/ 21 сентября 2011

Я пытаюсь создать сайт.У меня он отображается правильно в каждом браузере, кроме IE версии 8 и ниже.IE рисует синие прямоугольники вокруг моих изображений, которые также являются якорями.Я могу избавиться от этого, установив для свойства 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 ]

1 голос
/ 21 сентября 2011

Я прошу прощения за то, что не ответил на часть javascript.Но вы должны сделать это с CSS следующим образом:

a img { border:0; }
0 голосов
/ 21 сентября 2011

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/

0 голосов
/ 21 сентября 2011

Как выглядит ваш условный комментарий?И почему бы не применить это как стиль вместо этого?Это будет быстрее, чем при использовании JavaScript, и будет лучше поддерживаться.

...