<!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. HDU-1431-素数回文(暴力打表)

    素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. [HAOI2006]聪明的猴子 BZOJ 2429 Kruskal

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #i ...

  3. Linux 安装python3.7.3 提示已经自动安装了pip和setuptools 可是使用时bash提示没有找到pip

    Linux 安装python3.7.3 提示已经自动安装了pip和setuptools 可是使用时bash提示没有找到pip 今天的任务就是找到解决办法 另外就是用布置好python3的路径

  4. state-表单

    /*** 需求: 定义一个组件,可以将用户在输入框内输入的内容 进行实时显示** 分析:组件与用户交互过程中,存在状态的变化,即输入框的值** */var Input = React.createCl ...

  5. C++11 中的 Defaulted 和 Deleted 函数

    http://blog.jobbole.com/103669/ C++11 中的 Defaulted 和 Deleted 函数 2016/07/21 · C/C++, 开发 · C++ 分享到:3   ...

  6. css类选择器中 空格 逗号 啥都不填的区别及其他笔记

    .a.b 代表 一个元素上 同时 有 a 类 和 b 类 .a .b (中间有空格) 代表 .b 是 .a 的子元素选择. .a,.b 代表 class='a' 和 class='b' 都会被选择上.

  7. window 安装 python

    官网地址下载安装包 点击下载 会自动识别你当前的系统,或者点击你需要安装的平台 或者选择其他版本 执行安装 高级选项说明: Install for all users 所有用户可使用 Associat ...

  8. mfix添加文件后重新生成configure文件

    mfix给了一些程序接口,大部分时候只用修改现有程序即可满足要求,这种情况不用修改configure文件,但是如果添加了新文件就需要做一些修改. 我用了Jian Cai的程序尝试了一下编译,该学者在2 ...

  9. 【算法笔记】B1048 数字加密

    1048 数字加密 (20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 ...

  10. 【算法笔记】B1024 科学计数法

    1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位, ...