Почему глушение этого ключевого события не останавливает распространение? - PullRequest
0 голосов
/ 31 октября 2011

Один слушатель для входа, другой для документа. Слушатель ввода - keydown, нажатие документа. Событие input вызывается первым и заставляет событие замолчать, но слушатель документа по-прежнему вызывается! Почему?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Test Silence</title>
    </head>
    <body>
        <input type="text" id="test" name="test" />

        <script>
            var docListener = function(event)
            {
                var d = document.createElement( "div" );
                d.textContent = "documentListener";
                document.body.appendChild( d );
            }

            //Add key listener to document
            document.addEventListener( "keypress", docListener, true );

            var inputListener = function(event)
            {
                var d = document.createElement( "div" );
                d.textContent = "inputListener";
                document.body.appendChild( d );

                //Silence event
                event.preventDefault();
                event.stopPropagation();
            }

            //Add key listener to document
            document.getElementById( "test" ).addEventListener( "keydown", inputListener, true );
        </script>
    </body>
</html>

1 Ответ

0 голосов
/ 01 ноября 2011

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

document.getElementById( "test" ).addEventListener( "keypress", inputListener, true );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...