<!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. UVA - 11995 模拟

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

  2. js 三大事件(鼠标.键盘.浏览器)

    鼠标事件: click:单击 dblclick:双击 mousedown:鼠标按下 mouseup:鼠标抬起 mouseover:鼠标悬浮(进入) mouseout:鼠标离开(离开) mousemov ...

  3. AndroidManifest.xml警告

    新建一个android项目后,AndroidManifest.xml有一个黄色警告 作为一个新手,不知道这个警告来自哪里,点击界面下方的不同标签,才知道来自图中的位置 第8行中,application ...

  4. C++_类继承5-抽象基类

    abstract base class,ABC 抽象基类 有时候is-a规则并不像看上去那么简单,例如圆和椭圆的关系.圆是椭圆的特殊情况.椭圆可以派生出圆.但是椭圆的数据成员及方法对于圆来说是信息冗余 ...

  5. windows使用putty工具 进行【复制】,【粘贴】操作

    #复制# 按住鼠标左键,执行选择,放开左键时完成复制 #粘贴# 点击鼠标右键,执行粘贴

  6. 查找表set和map 349, 350

    两类查找问题: 1)查找有无: - 某个元素是否存在,通常使用set(集合) 2)查找对应关系(键值对应) - 某个元素出现了几次,map(字典) set和map都不允许里面的键值重复. 常见操作: ...

  7. C# Autofac 的 BeanFactory

    using Autofac; using Microsoft.Practices.ServiceLocation; namespace Core.Common { /// <summary> ...

  8. javascript 中typeOf

    JS中的变量是松散类型(即弱类型)的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值: 1. 'undefined' --- 这个值未定义: 2. 'bool ...

  9. 腾讯云(Linux)安装.net core sdk2.1、net core runtime2.1

    按照微软指令安装: sdk2.1:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-current 1. ...

  10. 分享个高精度IP定位

    https://www.opengps.cn/Data/IP/LocHighAcc.aspx