Почему в IE 8 не работает установка свойства «disabled» тега <link>через JavaScript? - PullRequest
3 голосов
/ 31 октября 2010

Я реализую функцию JavaScript, которая включает / отключает два файла CSS веб-сайта:

function switch_style ()
{
    var i, link_tag ;
    for (i = 0, link_tag = document.getElementsByTagName("link"); i < link_tag.length ; i++ ) 
    {
        if ((link_tag[i].rel.indexOf( "stylesheet" ) != -1) && link_tag[i].title) 
        {
            if(link_tag[i].title == "normal")
            {
                link_tag[i].disabled = true;
            }
            else if (link_tag[i].title == "contrast")
            {
                link_tag[i].disabled = false;
            }
        }
    }
    set_cookie( style_cookie_name, "contrast", style_cookie_duration );
}

Как видите, я включаю или отключаю тег ссылки. Это работает во всех браузерах, но не в IE8.

Есть ли известная причина?

Ответы [ 2 ]

4 голосов
/ 01 ноября 2010

Вы переключаете свойство disabled для link элементов. Как сказано на MDC,

[t] его атрибут нестандартный и используется только некоторыми браузерами Microsoft и не должны использоваться авторами . Чтобы добиться его эффекта, используйте один из следующие техники:

  • Если атрибут disabled был добавлен непосредственно на страницу, не вместо этого включите элемент <link>;
  • Если атрибут disabled был добавлен с помощью сценариев, удалите его из DOM через скрипты.

Чтобы удалить элемент link из DOM, используйте element.removeChild.

Просто глупый пример: если вы хотите удалить первый элемент link на странице, просто введите эту функцию JavaScript в адресную строку браузера:

javascript:(function(){var a=document.getElementsByTagName('head')[0];a.removeChild(a.getElementsByTagName('link')[0])})();

(Я только что попробовал на SO, выглядело смешно:)

0 голосов
/ 01 ноября 2010

что делать, если вы используете removeAttribute('disabled') вместо установки в false?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...