Куда я могу сообщить об ошибке - Firefox или Internet Explorer?

Internet Explorer ведет себя иначе, чем Firefox, Chrome, Opera, Safari. См. Мой вопрос: HTML-ссылка с заполнением и CSS активный стиль не работает

Это неопределенное поведение? Или мне нужно сообщить об ошибке. Если позже, то какой из браузеров работает правильно?

Вот тестовый код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>css active padding href problem</title>
        <style type="text/css">
            a{
                background:#CCC;
                border:1px solid #666;
                padding:0 35px 0 0;
            }
            a:active{
                padding:0 0 0 35px;
            }
        </style>
    </head>
    <body>
        <div>
            <p>Click on <i>Stack</i> - href does not work.
               Click on <i>Overflow</i> - href works.
               All browsers are affected.
               Except IE.</p>
            <a href="https://stackoverflow.com/">StackOverflow</a>
        </div>
    </body>
</html>

person Maris B.    schedule 26.11.2010    source источник


Ответы (2)


Я думаю, что IE поступает неправильно. a: active работает, когда кнопка мыши нажата, но href не отключается до того, как кнопка мыши снова будет поднята.

Псевдокод:

onmousedown(e) {
  setCssAsActive();
}
onmouseup(e) {
  activateHref();
}

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

Это то, что происходит в вашем коде. Когда вы щелкаете текст стека, ссылка удаляется от вашего указателя, а когда вы отпускаете кнопку, ссылка больше не находится под указателем. Он возвращается во время высвобождения, но тогда уже слишком поздно.

Поэтому я думаю, что IE поступает неправильно.

person Jan Sverre    schedule 26.11.2010

Я думаю, что основная проблема заключается в блочной модели IE, как указано здесь http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug

Поскольку ссылка говорит, что IE включает заполнение в поле, поэтому ссылка работает в IE, но не в любом другом браузере, это подтверждается изменением заполнения на поле в приведенном выше примере или здесь http://jsfiddle.net/S5dGw/

Хотя большинство (включая меня) сказали бы, что это ошибка IE, некоторые скажут, что это проблема W3C со спецификациями. http://www.crossbrowser.net/82/internet-explorer-box-model-is-not-a-bug/ насмешливо.

Не беспокойтесь, когда CSS3 будет полностью поддерживаться (это отдаленное будущее :)), он будет иметь атрибут box-sizing, который решит эту проблему, см. Ниже:

http://www.w3.org/TR/css3-ui/#box-sizing

person Cubed Eye    schedule 26.11.2010