Gần đây tôi đã phát hiện ra sự khác biệt giữa Bubbling và Chụp trên các sự kiện DOM, sử dụng javascript. Bây giờ tôi hiểu làm thế nào nó phải làm việc, nhưng tôi đã tìm thấy một tình huống kỳ lạ và tôi muốn biết tại sao điều đó xảy ra.Sủi bọt và chụp với addEventListener
Theo Quirks mode, sự kiện tuyên truyền bắt đầu bằng cách chụp trên div ngoài, chạm đáy và sau đó vuốt lên trên cùng. Vấn đề là khi tôi bắt đầu làm một số xét nghiệm.
Trên một đầu tiên này, mọi thứ hoạt động như mong đợi:
<div id="out">
<div id="in">
Click This!!
</div>
</div>
<script type="text/javascript">
document.getElementById('out').addEventListener('click', function(){
alert('capture out');
}, true);
document.getElementById('in').addEventListener('click', function(){
alert('capture in');
}, true);
document.getElementById('out').addEventListener('click', function(){
alert('bubble out');
}, false);
document.getElementById('in').addEventListener('click', function(){
alert('bubble in');
}, false);
</script>
Nếu bạn nhấp vào văn bản, các cảnh báo đi 'chụp ra', 'chụp tại', 'bong bóng trong' và 'bong bóng ra. Sự cố đang sử dụng mã sau:
<div id="out">
<div id="in">
Click This!!
</div>
</div>
<script type="text/javascript">
document.getElementById('out').addEventListener('click', function(){
alert('bubble out');
}, false);
document.getElementById('in').addEventListener('click', function(){
alert('bubble in');
}, false);
document.getElementById('out').addEventListener('click', function(){
alert('capture out');
}, true);
document.getElementById('in').addEventListener('click', function(){
alert('capture in');
}, true);
</script>
Trong trường hợp này, cảnh báo 'bắt', 'bong bóng', 'chụp vào' và 'bong bóng'. Nếu bạn nhận thấy, sự khác biệt duy nhất là trên thứ hai, bọt khí được chỉ định trước, nhưng tôi không nghĩ điều đó sẽ tạo ra bất kỳ sự khác biệt nào.
Tôi đã thử điều này với Firefox và Chrome và kết quả cũng giống nhau (tôi hiểu rằng trình khám phá internet không xử lý việc chụp).
thanx cho câu hỏi này. làm cho ý tưởng của tôi rõ ràng về chụp và sủi bọt. –