02.06.2009, 14:16
|
Новичок на форуме
|
|
Регистрация: 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.
И еще один хинт: проблема тут на стыке сразу двух багов.
Если кто-то видел, как я это уже описывал, просьба попридержать
|
|
02.06.2009, 14:30
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
ты забыл указать, что ie6 рушится? А ie7, кстати, просто не подгружает (запускает) script.js
p.s. прикрепи, плз, исходники ie6, без них тяжело как-то думается
|
|
02.06.2009, 14:40
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
После прописывания
<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-то мы открыли(скрипт подключился), а в сообщении пишет совсем другое.
|
|
02.06.2009, 14:42
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Если же мы перенесём наш скрипт в body, баг пропадает...
|
|
02.06.2009, 14:46
|
Новичок на форуме
|
|
Регистрация: 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>
|
|
02.06.2009, 14:47
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от B~Vladi
|
Если же мы перенесём наш скрипт в body, баг пропадает...
|
Вопрос не в том, как решить проблему научным тыком, а почему рушится ИЕ6. Чтобы знать и в будущем не натыкаться.
Сообщение от x-yuri
|
ты забыл указать, что ie6 рушится?
|
Да, проблема в ИЕ6.
|
|
02.06.2009, 14:48
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
ты забыл указать, что ie6 рушится? А ie7, кстати, просто не подгружает (запускает) script.js
|
Да это я тоже заметил. Но если мы в base или ссылке на скрипт пишем полный путь к html, то всё гуд. Думаю, это говорит нам о том, что base нужен для указания того. откуда брать док-ты, когда ие встречает относительную ссылку, поэтому href в base обязан иметь базовый урл, а не относительный, вроде "/".
|
|
02.06.2009, 14:50
|
Новичок на форуме
|
|
Регистрация: 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>
Рушится.
|
|
02.06.2009, 14:51
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Kolyaj
|
Вопрос не в том, как решить проблему научным тыком, а почему рушится ИЕ6. Чтобы знать и в будущем не натыкаться.
|
Это не тык, а простосто наблюдение.
|
|
02.06.2009, 14:53
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от 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>
Домены должны совпадать, как ты считаешь?
|
|
|
|