Показать сообщение отдельно
  #20 (permalink)  
Старый 02.06.2009, 15:49
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Вопсчем так... на вопрос "Почему рушится ИЕ" ответа пока не нашёл... Возможно нужно просто логически подумать... Но нашел способ, который обойдёт ентот баг.

Вопсчем задачи у нас такие:
1. Имеем тег base с установленным атрибутом href в значение / или в любое другое.
2. Скриптом. расположенным в хэде необходимо вставить скрипт/стиль/мета и т.д в тот же хэд.
3. Не упасть.

Вопсчем решение такое. Незнаю почему, но падение вызвано методом appendChild. Вместо этого мы можем использовать и другие методы дом, например, такие, как insertBefore.

Еси поправить наш скрипт, то получим такое:

<base href="/" />


<script type="text/javascript">
        var head=document.documentElement.firstChild;
        var js=document.createElement('script');
        js.type='text/javascript';
        js.src='script.js';
        head.insertBefore(js,document.documentElement.firstChild.lastChild);
    </script>


Скажу сразу, что этот код не будет работать, т.к. у нас неправильно установленно значение href для base. Если мы не можем его исправить - путь к скрипту указываем полный. Если можем - правим на правельный и тогда все относительные ссылки у нас будут рабочими.

По поводу конструкции
document.documentElement.firstChild.lastChild
.
Код
document.documentElement.firstChild
получает наш хэд(можно и по-другому), а lastChild указывает нам на узел, перед которым нужно вставлять то, что требуецца. Узел может быть любым, хоть первым, хоть последним.

Вот собсно и всё.
Ответить с цитированием