jsonp跨域实例丨利用百度数据制作搜索页面

Posted 千里独行0321

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsonp跨域实例丨利用百度数据制作搜索页面相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <meta name="Author" content="Fly">
        <style type=\'text/css\'>
            *{ margin:0; padding:0; font-family:Microsoft yahei,serif;}
            #box{width: 300px;margin: 100px auto;}
            #search{width: 298px;height: 38px;border: 1px solid #ccc;font-size: 14px;text-indent:5px;color: #222;}
            #list{width: 298px;border: 1px solid #ccc;border-top: none;display: none;}
            #list li{height: 25px;line-height: 25px;text-indent: 10px;font-size: 14px;list-style:none;cursor: pointer;overflow: hidden;width: 100%;}
            #list li a{display: block;width: 100%;height: 100%;color: #555;text-decoration:none;}
            #list li.hover{}
        </style>
    </head>
    <body>
        <div id="box">
            <input type="text" id="search"><ul id="list"><!--<li>111</li>--><!--<li>222</li>--><!--<li>333</li>--><!--<li>444</li>--><!--<li>555</li>--></ul>
        </div>
        <script>

            var oInp = document.getElementById(\'search\');
            var oList = document.getElementById(\'list\');
            var index = -1 , startVal = \'\';

            oInp.onkeyup = function (e) {
                var val = this.value;
                if (val){
                    e = e || window.event;
                    var keyCode = e.keyCode;
                    if (keyCode === 38 || keyCode === 40){
                        var aLi = oList.children;
                        var length = aLi.length;
                        if (keyCode===38){
                            index --;
                            if (index<-1)index = aLi.length -1;
                        }else{
                            index ++;
                            if (index>length-1)index = -1;
                        }
                        for (var j=0;j<length;j++){
                            aLi[j].className = \'\';
                        }
                        if (index !== -1){
                            this.value = aLi[index].children[0].innerText;
                            aLi[index].className = \'hover\';
                        }else{
                            console.log(startVal);
                            this.value = startVal;
                        }
                        return false;
                    }else if (keyCode === 13){
                        window.open(\'https://www.baidu.com/s?wd=\'+val , \'_blank\');
                        this.blur();
                    }else{
                        startVal = val;
                        addScript.call(this,val);
                    }
                }else{
                    oList.innerHTML = \'\';
                }
            };
            oInp.onblur = function () {
                setTimeout(function () {
                   oList.style.display = \'none\';
                },200);
            };
            oInp.onfocus = function () {
                oList.style.display = \'block\';
                if (this.value)addScript.call(this,this.value);
            };

            function addScript(val) {
                var oS = document.createElement(\'script\');
                oS.src = \'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=\'+ val +\'&cb=fly&_=\'+new Date().getTime();
                document.body.appendChild(oS);
                oS.onload = function () {
                    document.body.removeChild(this);
                };
            }
            function fly(mJson) {
                var s = mJson.s;
                var length = Math.min(s.length , 5);
                oList.innerHTML = \'\';
                for (var i=0;i<length;i++){
                    var oLi = document.createElement(\'li\');
                    oLi.innerHTML = \'<a href="https://www.baidu.com/s?wd=\'+ s[i] +\'" target="_blank">\' +s[i]+ \'</a>\';
                    oLi.onmouseenter = function () {
                        for (var j=0;j<length;j++){
                            this.parentNode.children[j].className = \'\';
                        }
                        this.className = \'hover\';
                    };
                    oLi.onmouseleave = function () {
                        this.className = \'\';
                    };
                    oList.appendChild(oLi);
                }
            }
        </script>
    </body>
</html>

以上是关于jsonp跨域实例丨利用百度数据制作搜索页面的主要内容,如果未能解决你的问题,请参考以下文章

jq使用jsonp实现百度搜索

百度搜索关键词联想API JSONP使用实例

解决跨域问题,实例调用百度地图

jsonp实现百度搜索 封装ajax框架

利用jsonp实现跨域请求

JSONP跨域详解 + 模拟百度搜索