Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Почему рушится ИЕ (задачка на подумать) (https://javascript.ru/forum/css-html-internet-explorer/3883-pochemu-rushitsya-ie-zadachka-na-podumat.html)

B~Vladi 02.06.2009 14:54

DOCTYPE роли не играет.

Kolyaj 02.06.2009 15:01

Цитата:

Сообщение от B~Vladi
Вот мой html, при котором ие7 грузит скрипт

Цитата:

Сообщение от x-yuri
ты забыл указать, что ie6 рушится?

Цитата:

Сообщение от Kolyaj
Да, проблема в ИЕ6.

Ладно, если кто другой не понял, но вам-то я лично писал
Цитата:

Попробуйте запустить ваш код в ИЕ6 в контексте такой вот страницы.

Цитата:

Сообщение от B~Vladi
Домены должны совпадать, как ты считаешь?

Без разницы.

B~Vladi 02.06.2009 15:08

Вобщем ие7 грузит скрипт, когда в base указан базовый урл, с которого ты грузишь html. Это и верно, потому что значение должно быть именно таким. если ты напишешь google.ru в base, то при, например, <img src="www.site.ru/img/logo.jpg"/> ,ие будет грузить с http://google.ru/www.site.ru/img/logo.jpg... Понимаем?!

B~Vladi 02.06.2009 15:11

Вобщем тесты показывают, что ие6 падает при любой попытке вставить тег в хед, если там есть base с любым значением href... пох скрипт это или стили или мета...

Kolyaj 02.06.2009 15:20

Цитата:

Сообщение от B~Vladi
Вобщем тесты показывают, что ие6 падает при любой попытке вставить тег в хед, если там есть base с любым значением href... пох скрипт это или стили или мета...

Угу.

B~Vladi 02.06.2009 15:26

Сдаёцца мне что на вопрос "Почему рушится ИЕ" нам смогут ответить только парни из микрософта... Это как же нужно прикрутить подержку тега криво?!:lol:

B~Vladi 02.06.2009 15:27

А всё потому. что привыкли всё воровать/отбирать у других, а самим что-то сделать - руки кривые... Линух - форева! Парни молодцы!

Kolyaj 02.06.2009 15:28

Ну почему же. Я знаю, просто для интереса запостил.

B~Vladi 02.06.2009 15:36

Ура, товарисчи!
Щя всё напишу;)

B~Vladi 02.06.2009 15:49

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

Вопсчем задачи у нас такие:
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 указывает нам на узел, перед которым нужно вставлять то, что требуецца. Узел может быть любым, хоть первым, хоть последним.

Вот собсно и всё.


Часовой пояс GMT +3, время: 18:28.