Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.06.2009, 13:16
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Почему рушится ИЕ (задачка на подумать)
Решил вынести отсюда в отдельную тему задачку, которая в свое время выносила мне мозг.

Попробуйте открыть в ИЕ следующую страничку
<html>
<head>
    <base href="/" />
    <script type="text/javascript">
        var head=document.documentElement.firstChild; // Есть и другие варианты получить head. Кому как удобнее.
        var js=document.createElement('script');
        js.type='text/javascript';
        js.src='script.js';
        head.appendChild(js);
    </script>
</head>
<body>
</body>
</html>


Небольшие хинты, которые сэкономят время в случае заинтересованности:
1. Если ИЕ уже порушился, то обновлять страницу бесполезно, даже если она была изменена. Нужно перезагружать ИЕ.
2. Чтобы избавится от пункта 1, можно открывать проблемную страницу в iframe.

И еще один хинт: проблема тут на стыке сразу двух багов.

Если кто-то видел, как я это уже описывал, просьба попридержать
Ответить с цитированием
  #2 (permalink)  
Старый 02.06.2009, 13:30
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ты забыл указать, что ie6 рушится? А ie7, кстати, просто не подгружает (запускает) script.js

p.s. прикрепи, плз, исходники ie6, без них тяжело как-то думается
Ответить с цитированием
  #3 (permalink)  
Старый 02.06.2009, 13:40
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

После прописывания
<base href="/" />
IE6 Перестал находить файл, указанный в адресной строке (Internet Explorer cannot open the Internet Site [url]), а не файл подключаемого скрипта. Появилось предположение, что в аттрибуте href нежно указывать полный путь к html документу(http://domain.zon/doc.html). После этого скрипт стал загружаться, но ИЕ всё равно падал(!). Судя по сообщению (Internet Explorer cannot open the Internet Site [url]) это действительно баг ИЕ, т.к. html-то мы открыли(скрипт подключился), а в сообщении пишет совсем другое.
Ответить с цитированием
  #4 (permalink)  
Старый 02.06.2009, 13:42
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Если же мы перенесём наш скрипт в body, баг пропадает...
Ответить с цитированием
  #5 (permalink)  
Старый 02.06.2009, 13:46
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Чтобы не смущало отсутствие подключаемого скрипта, можно так
<html>
<head>
    <base href="/" />
    <script type="text/javascript">
        var head=document.documentElement.firstChild;
        var js=document.createElement('script');
        js.type='text/javascript';
        js.src='http://javascript.ru/forum/images/ca_serenity/misc/scripts.js';
        head.appendChild(js);
    </script>
</head>
<body>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 02.06.2009, 13:47
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B~Vladi
Если же мы перенесём наш скрипт в body, баг пропадает...
Вопрос не в том, как решить проблему научным тыком, а почему рушится ИЕ6. Чтобы знать и в будущем не натыкаться.

Сообщение от x-yuri
ты забыл указать, что ie6 рушится?
Да, проблема в ИЕ6.
Ответить с цитированием
  #7 (permalink)  
Старый 02.06.2009, 13:48
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Сообщение от x-yuri
ты забыл указать, что ie6 рушится? А ie7, кстати, просто не подгружает (запускает) script.js
Да это я тоже заметил. Но если мы в base или ссылке на скрипт пишем полный путь к html, то всё гуд. Думаю, это говорит нам о том, что base нужен для указания того. откуда брать док-ты, когда ие встречает относительную ссылку, поэтому href в base обязан иметь базовый урл, а не относительный, вроде "/".
Ответить с цитированием
  #8 (permalink)  
Старый 02.06.2009, 13:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B~Vladi
Но если мы в base или ссылке на скрипт пишем полный путь к html, то всё гуд.
Не надо писать не подтвержденных предположений.
<html>
<head>
    <base href="http://www.yandex.ru/" />
    <script type="text/javascript">
        var head=document.documentElement.firstChild;
        var js=document.createElement('script');
        js.type='text/javascript';
        js.src='http://javascript.ru/forum/images/ca_serenity/misc/scripts.js';
        head.appendChild(js);
    </script>
</head>
<body>
</body>
</html>
Рушится.
Ответить с цитированием
  #9 (permalink)  
Старый 02.06.2009, 13:51
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Сообщение от Kolyaj
Вопрос не в том, как решить проблему научным тыком, а почему рушится ИЕ6. Чтобы знать и в будущем не натыкаться.
Это не тык, а простосто наблюдение.
Ответить с цитированием
  #10 (permalink)  
Старый 02.06.2009, 13:53
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Сообщение от Kolyaj
Не надо писать не подтвержденных предположений.
Это проверенно! Чё из мя дурака делать?!

http://www.yandex.ru/ и http://javascript.ru/... Найди 10 отличий называется...

Вот мой html, при котором ие7 грузит скрипт

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>
<head>
	<base href="http://cs/test/test.html" />
    <script type="text/javascript">
        var head=document.documentElement.firstChild;
        var js=document.createElement('script');
        js.type='text/javascript';
        js.src='script.js';
        head.appendChild(js);
    </script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
test
</body>
</html>

Домены должны совпадать, как ты считаешь?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск