一个侦听器是输入,另一个是文档。输入监听器是keydown,即文档的按键。首先调用输入事件并使事件静音,但仍然会调用文档侦听器!为什么呢?
<?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>
答案 0 :(得分:0)
这是两个不同的事件。一个人不会干涉另一个人。如果你想停止keypress
冒泡,你必须明确说出来:
document.getElementById( "test" ).addEventListener( "keypress", inputListener, true );