Замучался с IE (javascript)

02.02.2011

Вчера в обсуждении выяснилось, что IE не применяет стили, а иной раз вообще не подставляет строку в DOM-дерево. Родилась идея отказаться вообще от встроенных стилей и динамически вставлять их в head документа. Вот сейчас у меня в блоге как раз такой вариант тестируется. Но browsershots.org показывает, что IE вообще строчку теперь игнорирует! Что делать?

Кто имеет выдающийся сексуальный опыт взаимоотношений с Internet Explorer всяких версий и разбирается в JavaScript, помогите пожалуйста. Что я сделал не так? Какие проблемы в моём JS, и как сделать точно кроссбраузерно?

Вроде все нормальные браузеры понимают правильно.

P.S. http://brokenbrake.biz/DaosWorks/JSblock.php

Комментарии

  1. # quantum

    в ие 8 ошибка на этой строке

    DaoStyle.innerHTML = ‘#daos { background:#333 url(/images/patterns/127.png); padding:.6em 2%; } #daostring { font-size:x-large; color:white; } #daosinvite { display:block; font-size:small; text-align:right; color:white; margin-top:.5em; opacity:.5; }’

  2. # Тормоз

    А как ты это определил, и что конкретно ему в этой строке не нравится?

  3. # PistoGanza: 

    JQuery? Можно проверять загружена ли уже библиотека (а сейчас ее очень часто используют), если нет – загружать какую-нибудь сильно урезанную версию.

  4. # Тормоз

    Проблема — не могу попасть внутрь дома, потерял ключ. Решение — может вызвать бульдозер? Он разрушит стены и ты сможешь войти.

  5. # quantum

    В дебагере ие8 вылетает на этой строке с неизвестной ошибкой. Поискал в интернете – у style в ie проблемы с innerhtml

    в ие работает такая фишка document.createStyleSheet().addRule(’#daos’, ‘background:#333 url(/images/patterns/battle-royale.gif); padding:.6em 2%;’);

    Как совместить – думай

  6. # Тормоз

    Спасибо. Блин, вот засранцы! Почему вообще они один из элементов HTML сделали особенным? :( Ладно, бум думать. Но я очень не люблю всяческие хаки под конкретные браузеры, это плохой путь на мой взгляд.

  7. # Тормоз

    А кроме innerHTML как-то ещё в JS можно установить содержимое элемента?

  8. # quantum

    Посмотри social.msdn.microsof…

    сообщение John Sudds от Friday, September 21, 2007 10:00 PM

  9. # Тормоз

    Ужас какой-то :( Какой к чёрту security purposes? Глупо как всё, блин, прямо вообще.

  10. # Тормоз

    Я вот сейчас читаю глубже, и выходит, что innerHTML вообще нестандартная какая-то штуковина. Зато весь интернет пестрит статьями с использованием именно этого способа. Интересно девки пляшут.

  11. # samlowry

    jquery — это не бульдозер. Это превращение ассемблера в Си + программирование под Виндовс вместо доса. Косяки будут выплывать всегда у тебя, невозможно всё это свести одному человеку в правильную хрень для всех браузеров.

    Ты ж тоже на тракторе-PHP программируешь, не на Си, родном для системы. Ключи не нашёл?

    Скажешь, клиенты? А чё — систем немного, можно подо них скомпилить даос. А чуть что не заработало на какой-то — прыгать по манам, и решать проблему. Ведь ключи ж всего лишь забыл.

  12. # Тормоз

    Ты не переубедишь меня. Я против использования огромного монстрячного фреймворка для решения примитивных задач. Дурацкая мода совершенно.

  13. # samlowry

    Ты про джаваскрипт? Эт точно.

  14. # Тормоз

    Не путай встроенные возможности браузера с километром подключаемого кода.

  15. # polonskiy: 

    Один из плюсов этого «монструозного» jQuery как раз в том, что там уже решена куча проблем кроссбраузерности.

    Что тебя смущает в jQuery? Если то, что пользователь должен будет вместе со страницей загружать «кучу не нужного кода», тогда используй, например Google CDN. Дело в том, что многие сайты как раз подгружают jQuery из Google CDN, таким образом пользователь, посетивший такой сайт уже имеет эту библиотеку в кэше браузера и заходя на твою страницу не будет повторно ее загружать.

    Но с jQuery тебя тоже ждет сюрприз: тебе нужно будет предусмотреть такую ситуацию, когда на сайте, где будет размещен Даос, уже подключен этот фреймворк, т.е. могут быть конфликты.

  16. # quantum

    >т.е. могут быть конфликты.

    в jquery есть режим совместимости (не помню как точно называется). Чтобы не было конфликтов.

    Топик и комменты очень напоминают этот lleo.aha.ru/blog/201… топик Каганова, где его убеждают пользовать фреймворки, а он всех посылает:)

  17. # Миша: 

    это не единственная фишка ие, достаточно вспомнить работу с таблицами…

  18. # none

    Поправьте меня, но 27к – это немного даже для диал-апа, но кто сейчас им пользуется?!жквери, зенд, рельсы – только улучшают жизнь программистов (тут должен быть мой кривой смайлик)

  19. # Тормоз

    Я знаю про CDN. И знаю, что чаще всего люди не зная ответ на вопрос предлагают совсем другой путь. Это нормально. И знаю ещё кое-что: я лично чувствую ощутимые тормоза в работе почти всех сайтов с jQuery.

  20. # Миша: 

    Зато сейчас многие пользуются мобильным интернетом, и не смотря на рекламу всякие 3ж и т.п. оставляют желать лучшего…

  21. # Штудер

    помню помню – возился с добавлением элементов в эксплорере и остальных браузерах. В общем фишка в том что в ие надо сразу создавать элемент со всеми атрибутами – создание элемента и навеску атрибутов он не понимает (ну или во всяком случае не понимал). Сейчас гляну один проектик который мы делали, может там код остался :)

  22. # Штудер

    не нашел
    зато немного вспомнил – document.createElement(»<a href=‘2’ class=‘32’>»);
    примерно так создается жлемент в ие. В остальных браузерах этот код порождает ошибку, так что нужно оборачивать в try/catch

  23. # Тормоз

    Ну выше как раз quantum давал ссылку на решение от инженера Microsoft с try/catch. Не нравится мне оно, очень не нравится :(

  24. # Штудер

    Думаешь оно мне нравится? Но когда была необходимость, то делал именно так. В данном случае это самый изящный вариант.

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют