<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style>
* {
margin: ;
padding: ;
} #wrap {
width: 400px;
margin: 50px auto;
} #wrap input {
width: 380px;
height: 38px;
border: # 1px solid;
padding: 9px;
} #wrap ul {
border: # 1px solid;
width: 398px;
height: auto;
padding: ;
overflow: hidden;
} #wrap ul li {
list-style: none;
width: 380px;
padding: 9px;
height: 30px;
border-bottom: # 1px solid;
line-height: 30px;
} #wrap ul li.on {
background: #c00;
color: #fff;
}
</style>
<script>
function jsonP(json) {
if (!json.url) {
alert('请输入正确的请求路径');
return;
}
json.data = json.data || {};
json.cbName = json.cbName || 'cb';
var fnName = 'show' + Math.random();
fnName = fnName.replace('.', '');
window[fnName] = function (json2) {
json.success && json.success(json2);
oHead.removeChild(oScript);
};
json.data[json.cbName] = fnName;
var arr = [];
for (var name in json.data) {
arr.push(name + '=' + json.data[name]);
}
var oScript = document.createElement('script');
oScript.src = json.url + '?' + arr.join('&');
var oHead = document.getElementsByTagName('head')[];
oHead.appendChild(oScript);
}
window.onload = function () {
var oTxt = document.getElementById('txt');
var oBox = document.getElementById('box');
var iNow = -;
var oldValue;
oTxt.onkeyup = function (ev) {
var oEvent = ev || event;
if(oEvent.keyCode != && oEvent.keyCode != && oEvent.keyCode != ){
jsonP({
url: 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',
data: {
wd: oTxt.value
},
success: function (json) {
var arr = json.s;
for (var i = ; i < arr.length; i++) {
var oLi = document.createElement('li');
oLi.innerHTML = arr[i];
oBox.appendChild(oLi);
}
var aLi = oBox.children;
for (var i = ; i < aLi.length; i++) {
aLi[i].index = i;
aLi[i].onmouseover = function () {
iNow = this.index;
for (var i = ; i < aLi.length; i++) {
aLi[i].className = '';
}
this.className = 'on';
oTxt.value = this.innerHTML;
};
}
}
});
oldValue = oTxt.value;
}
}; oTxt.onkeydown = function (ev) {
var oEvent = ev || event;
var aLi = oBox.children;
if(oEvent.keyCode == ){
iNow++;
if(iNow == aLi.length){
iNow = -;
} for(var i = ; i < aLi.length; i++){
aLi[i].className = '';
}
if(iNow == -){
oTxt.value = oldValue;
}else{
aLi[iNow].className = 'on';
oTxt.value = aLi[iNow].innerHTML;
}
}
if(oEvent.keyCode == ){
iNow--;
if(iNow == -)iNow = aLi.length - ;
for(var i = ; i < aLi.length; i++){
aLi[i].className = '';
}
if(iNow == -){
oTxt.value = oldValue;
}else{
aLi[iNow].className = 'on';
oTxt.value = aLi[iNow].innerHTML;
}
return false;
}
if(oEvent.keyCode == ){
window.open('https://www.baidu.com/s?wd=' + oTxt.value);
}
}
}
</script>
</head>
<body>
<div id="wrap">
<input type="text" id="txt">
<ul id="box"> </ul>
</div>
</body>
</html>

jsonp跨域&百度下拉的更多相关文章

  1. angular的跨域(angular百度下拉提示模拟)和angular选项卡

    1.angular中$http的服务: $http.get(url,{params:{参数}}).success().error(); $http.post(url,{params:{参数}}).su ...

  2. JSONP跨域访问百度实现搜索提示小案例

    一.JSONP简介 JSONP 全称 JSON with padding(填充式 JSON 或参数式 JSON),JSONP实现跨域请求的原理,就是动态创建<script>标签,然后利用& ...

  3. jsonp跨域获取数据实现百度搜索

    本菜鸡最近在写某个页面请求数据时,报了如下的错误. Failed to load https://...:No 'Access-Control-Allow-Origin' header is pres ...

  4. vue的jsonp百度下拉菜单

    通过vue的jsonp实现百度下拉菜单的请求,vue的版本是2.9.2 <!DOCTYPE html> <html lang="en"> <head& ...

  5. 计算机网络之JSONP跨域

    JSONP跨域实现原理 百度联想词跨域实现 一.JSONP跨域实现原理 1.Web页面使用<script>引入JS文件时不受同源策略的影响.准确的说,所有拥有src属性的标签都不受同源策略 ...

  6. 前端跨域问题相关知识详解(原生js和jquery两种方法实现jsonp跨域)

    1.同源策略 同源策略(Same origin policy),它是由Netscape提出的一个著名的安全策略.同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正 ...

  7. jsonp跨域+ashx(示例)

    前言 做B/S项目的时候,我们一般使用jquery+ashx来实现异步的一些操作,比如后台获取一些数据到前台,但是如果ashx文件不在本项目下,引用的是别的域下的文件,这时候就访问不了.关于jsonp ...

  8. Jsonp跨域访问

    很早之前看过好几篇跨域访问的文章,然后做项目的时候基本没有遇到跨域访问的问题.不过该来的还是会来,前些天终于让我遇到了.于是重温了一下原理这些,再进行实战.于是现在也敢通过实战后的一些理解来和大家分享 ...

  9. jsonp 跨域请求

    背景: JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源 ...

随机推荐

  1. Linux系统下Qt环境搭建

    http://www.linuxidc.com/Linux/2013-07/87576.htm 主要是需要提前安装一些动态库,否则编译的时候会出现 /usr/bin/ld: cannot find - ...

  2. LeetCode记录之35——Search Insert Position

    这道题难度较低,没有必要作说明. Given a sorted array and a target value, return the index if the target is found. I ...

  3. Fountains(非线段树版(主要是不太会用))

    Arkady plays Gardenscapes a lot. Arkady wants to build two new fountains. There are n available foun ...

  4. npm的介绍

    npm使JavaScript开发人员能够轻松地共享和重用代码,并且可以轻松更新你正在共享的代码. 如果你一直在使用JavaScript,你可能已经听说过npm.npm使JavaScript开发人员能够 ...

  5. Codeforces - 185A 简单矩阵快速幂

    题意:求第n个三角形内部的上三角形个数 对每个三角形分别维护上下三角形个数,记为\(dp[1][i],dp[2][i]\) 规律很明显是 \(dp[1][i+1]=3*dp[1][i]+dp[2][i ...

  6. 微信小程序中如何使用setData修改数组或对象中的某一参数

    本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...

  7. PIE SDK均值滤波

    1.算法功能简介 均值滤波是最常用的线性低通滤波,它均等地对待邻域中的每个像素.对于每个像素,取邻域像素值的平均作为该像素的新值.均值滤波算法简单,计算速度快,对高斯噪声比较有效.从频率域的角度看,相 ...

  8. css百分比单位

    1 :字体大小 父级字体的百分比 2:margin-left margin-top 父级容器的宽度 3:宽高 width: 50%; 父级宽的一半height: 50%; 父级高的一半

  9. PHP 设置 socket连接

    摘要: 作者博文地址:https://www.cnblogs.com/liu-shuai/ nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socket方式. sock ...

  10. HTML5之WebSocket && https://zhuanlan.zhihu.com/p/23467317

    在认识websocket之前,我们必须了解的是websocket有什么用? 他能解决我们遇到的什么问题? 如果没用,那么我们就么有使用它的必要的. websocket就是建立起全双工协议的,提高了效率 ...