Простая веб-страница, которая вылетает Internet Explorer 8 - PullRequest
1 голос
/ 01 октября 2010

Я пробовал следующий HTML-код на нескольких компьютерах с Windows 7 с Internet Explorer 8, и везде это приводит к сбою Internet Explorer. Я не смог воспроизвести это с IE7 или на Windows XP с IE8.

<!doctype html>

<head>
<title>Crashes IE8 on Win7</title>
<style>
article { display: block; }
</style>
<script>
document.createElement('article');
document.createElement('nav');

function initialize() {
    var map = new google.maps.Map(document.getElementById("map_canvas"), {});
}

function loadScript() {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
    document.body.appendChild(script);
}

window.onload = loadScript;
</script>
</head>
<body>

<nav><ul><li>
    <div id="map_canvas"></div>
    <article>
</li></ul></nav>

</body>

Единственная ошибка real на странице - отсутствующий тег </article>. Все остальное требуется для сбоя IE. Я уверен, что мог бы еще больше сузить его, разобрав API Карт Google, но это зашло слишком далеко для меня.

Кто-нибудь еще может воспроизвести это, или это какая-то странная конфигурация, которая применима только ко всем машинам, на которых я это тестировал?

РЕДАКТИРОВАТЬ: Чтобы быть более ясным, я не ищет исправление моего кода. (Исправление было бы: добавьте отсутствующий тег </article>.) Я смотрю, не приводит ли это к аварийному завершению IE8 на Win7 и других людей, и, возможно, следует ли мне сообщать об этом где-то, поскольку я понимаю, что сбои часто можно использовать для получения контроля над жертвами. компьютер.

Ответы [ 2 ]

0 голосов
/ 01 октября 2010

Попробуйте переместить скрипт вниз в конец страницы.

Я бы также убрал следующее:

  • Удалите не-HTML код в теле
  • Добавить открывающий и закрывающий тег html

Это работает для меня:

<!doctype html>
<html>
<head>
<title>Crashes IE8 on Win7</title>
<style type="text/css">
article { display: block; }
</style>

</head>
<body>

<div id="map_canvas"></div>

<script type="text/javascript">
document.createElement('article');
document.createElement('nav');

function initialize() {
    var map = new google.maps.Map(document.getElementById("map_canvas"), {});
}

function loadScript() {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
    document.body.appendChild(script);
}
window.onload = loadScript;
</script>
</body>
</html>
0 голосов
/ 01 октября 2010

Я могу воспроизвести вашу проблему с помощью IE8 в Windows 7. Это вполне может быть связано с этой публикацией , которая предполагает, что проблема вызвана попыткой изменить элемент до завершения загрузки страницы.В этом случае вы можете решить проблему, используя jQuery для вызова метода loadScript после завершения загрузки страницы.Например,

<script>
    $().ready(function() {
        loadScript();
    });
</script>
...