一個監聽器是一個輸入,另一個是文檔。輸入監聽器是keydown,即文檔的按鍵。輸入事件首先被調用並使事件靜音,但文檔監聽器仍然被調用!爲什麼?爲什麼沉默這個keyevent不會停止傳播?
<?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>
看看event.srcElement和event.target。通過在兩個不同的元素上尋找相同的事物,您可能觸發了兩個不同的事件。 –
你在測試什麼瀏覽器?我只看到第一個輸入事件觸發,我認爲是你想要的。在這裏:http://jsfiddle.net/namuol/pLJtt/ – namuol
在Firefox 7.0.1中測試。 –