|
Почему рушится ИЕ (задачка на подумать)
Решил вынести отсюда в отдельную тему задачку, которая в свое время выносила мне мозг.
Попробуйте открыть в ИЕ следующую страничку
<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. И еще один хинт: проблема тут на стыке сразу двух багов. Если кто-то видел, как я это уже описывал, просьба попридержать :) |
ты забыл указать, что ie6 рушится? А ie7, кстати, просто не подгружает (запускает) script.js
p.s. прикрепи, плз, исходники ie6, без них тяжело как-то думается :yes: |
После прописывания
<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-то мы открыли(скрипт подключился), а в сообщении пишет совсем другое. |
Если же мы перенесём наш скрипт в body, баг пропадает...
|
Чтобы не смущало отсутствие подключаемого скрипта, можно так
<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>
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
<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>
Рушится. |
Цитата:
|
Цитата:
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>
Домены должны совпадать, как ты считаешь? |
| Часовой пояс GMT +3, время: 06:22. |
|