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 @   JackieDYH  阅读(11)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示