vue实现仿百度搜索效果-模拟跨域请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .select{
            background-color: coral;
            color: #fff;
        }
    </style>
    <!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> -->
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <div id="root">
        <!-- @input="search" -->
        <input type="text" v-model="ipt"  @keydown.down="down" @keydown.up.prevent="up" @keydown.enter="enter">
        <button @click="search">搜索</button>
        <ul>
            <li v-for="(item,idx) of arr" :class="{select:idx==isid}">{{ item }}</li>
        </ul>
    </div>
    <script>
        const vm = new Vue({
            el:'#root',
            data:{
                arr:[],
                ipt:'',
                isid:-1
            },
            methods:{
                search(){
                    if(this.ipt == '')return;
                    // cb 回调函数名称
                    // wd 要搜索的关键词
                    var s = document.createElement("script");
                    s.src="http://suggestion.baidu.com/su?cb=callback&wd="+this.ipt;
                    // s.src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?cb=callback&wd="+this.ipt;
                    document.body.append(s);
                },
                down(){
                    this.isid++;
                    if(this.isid>3){
                        this.isid=-1;
                    }
                },
                up(){
                    this.isid--;
                    if(this.isid<0){
                        this.isid=4;
                    }
                },
                enter(){
                    console.log(this.arr[this.isid],this.isid)
                    if(this.isid == -1 || this.isid == 4){
                        window.open("https://www.baidu.com/s?wd="+this.ipt);
                    }else{
                        window.open("https://www.baidu.com/s?wd="+this.arr[this.isid]);
                    }
                }
            },
            watch:{//监听
                // ipt:function() 简写
                ipt(newVal,oldVlal){
                    if(newVal == ''){
                        return false;
                    }
                    console.log(newVal);
                    console.log(oldVlal);
                    var s = document.createElement("script");
                    s.src="http://suggestion.baidu.com/su?cb=callback&wd="+newVal;
                    document.body.append(s);
                }
            }
        });
        function callback(res){
            //现在收索显示条数
            res.s.length=4;
            vm.arr = res.s;
        }
    </script>
</body>
</html>

 

posted @ 2020-06-03 21:18  JackieDYH  阅读(19)  评论(0)    收藏  举报  来源