<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件修饰符</title>
    <script type="text/javascript" src="../vue.js"></script>
    <style>
        *{
            margin-top: 20px;
        }
        .demo1{
            height: 50px;
            background-color: skyblue;
        }
        .box1{
            height: 80px;
            background-color: skyblue;
        }
        .box2{
            width: 60px;
            background-color: orange;
        }
        .box3{
            height: 80px;
            background-color: blue;
        }
        .list{
            height: 200px;
            width: 200px;
            background-color: bisque;
            overflow: auto;
        }
        li{
            height: 100px;
        }
    </style>
</head>
<body>
<div id="root">
<!--    阻止默认操作-->
    <h2>你好 {{name}}!!</h2>
    <a href="https://www.baidu.com" target="_blank" @click.prevent="showView">阻止默认操作</a>
<!--    停止冒泡-->
    <div class="demo1" @click="showView">
        <button @click.stop="showView">停止冒泡</button>
    </div>
<!--    事件只触发一次-->
    <button @click.once="showView">事件只触发一次</button>
<!--    事件捕获模式-->
    <div class="box1" @click.capture="showMsg(1)">
        div1
        <div class="box2" @click="showMsg(2)">
            div2
        </div>
    </div>
<!--    self控制触发事件-->
    <div class="box3" @click.self="showInfo">
        <button @click="showInfo">self控制触发事件</button>
    </div>
<!--    passive优先处理时间,不用等待事件绑定功能执行完毕,多用于移动端-->
    <ul @wheel.passive="demo" class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

</div>
<script>
    new Vue({
        el: '#root',
        data: {
            name: '哈哈'
        },
        methods: {
            showView(e){
                // e.preventDefault()  // 禁用默认事件
                // e.stopPropagation()  // 禁用冒泡
                alert("hahahaha!!!")
            },
            showMsg(msg){
                console.log(msg)
            },
            showInfo(e){
                console.log(e.target)
            },
            demo(){
                for (let i=0; i<=10000; i++) {
                    console.log('@')
                }
            }
        }
    })
</script>
</body>
</html>