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跨域实例丨利用百度数据制作搜索页面的更多相关文章
- jsonp跨域实例
一.什么是跨域 二.如何解决跨域 1.前端常用 JSONP 2.服务器端配置 HTTP 协议的 header 解析 三.JSONP实现的实例 <!DOCTYPE html> <htm ...
- 使用jsonp跨域请求后可以获得数据,但是进入error方法,返回parseerror
$.ajax({ url:url, dataType:'jsonp', jsonp: 'callback',//回调函数名字 jsonpCallback: 'success_jsonpCallback ...
- Jsonp跨域访问原理和实例
>>什么是跨域 出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,当前域名的js只能读取同域下的窗口属性,即同源策略.而跨域就是通过某些手段来绕过同源策略限制,实 ...
- JSONP跨域jQuery处理整理(附天气数据实例)
写在前面 跨域的解决方案有多种,其中最常见的是使用同一服务器下的代理来获取远端数据,再通过ajax进行读取,而在这期间经过了两次请求过程,使得获取数据的效率大大降低,这篇文章蓝飞就为大家介绍一下解决跨 ...
- jsonp跨域获取数据实现百度搜索
本菜鸡最近在写某个页面请求数据时,报了如下的错误. Failed to load https://...:No 'Access-Control-Allow-Origin' header is pres ...
- jquery ajax jsonp跨域调用实例代码
今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Lan ...
- JSONP跨域访问百度实现搜索提示小案例
一.JSONP简介 JSONP 全称 JSON with padding(填充式 JSON 或参数式 JSON),JSONP实现跨域请求的原理,就是动态创建<script>标签,然后利用& ...
- 通用jsonp跨域技术获取天气数据
1. 前言 在进行网站开发的过程中经常会用到第三方的数据,但是由于同源策略的限制导致ajax不能发送请求,因此也无法获得数据.解决ajax的跨域问题可以使用jsonp技术 2.代码 <!DOCT ...
- 跨域漏洞丨JSONP和CORS跨域资源共享
进入正文之前,我们先来解决个小问题,什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 跨域常见的两种方式,分别是JSONP和CORS. 今天i ...
随机推荐
- QQ空间说说爬虫
QQ空间说说爬虫 闲来无事,写了一个QQ空间的爬虫,主要是爬取以前的说说,然后生成词云. 这次采用的主要模块是selenium,这是一个模拟浏览器的模块,一开始我不想用这个模块写的,但是后面分析的时候 ...
- 紫书 例题 9-10 UVa 1626 (区间dp + 输出技巧)
当前区间f(i, j)分两种情况,一种是s[i]于s[j]符合要求,那么可以转移到f[i + 1][j - 1] 这样答案只会更小或者相等 第二种是直接分成两个部分, 即f[i][j] = f[i][ ...
- Swift学习笔记(13)--属性 (Properties)
普通属性用var和let即可,本文不做详述 1.延迟存储属性 延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性.在属性声明前使用@lazy来标示一个延迟存储属性. class DataImp ...
- C++11 volatile 类型
volatile作用: 作为指令关键字,确保本条指令不会受到编译器的优化而省略,而且要求每次直接读值. 定义: volatile int nTest; volatile关键字是一种类型修饰符,用它声明 ...
- Windows7下修改pip源
以下列举三种方式的pip源配置: 1. 设置环境变量PIP_CONFIG_FILE指向pip.ini源配置文件,pip.ini文件内容如下: [global] index-url = http://m ...
- leetcode笔记:Sort Colors
一. 题目描写叙述 Given an array with n objects colored red, white or blue, sort them so that objects of the ...
- SSL通关之代码演示样例(四)
实际开发过程中,server端是不须要多加代码处理的,由于ssl验证过程是由server(tomcat.nginx等)完毕的. 这段代码也是參考了网上的: 新建一个web项目,项目结构和须要引入的ja ...
- JAVA File类 分析(二)
本章開始介绍UNIX文件系统. 文件系统是怎样管理文件的呢?那咱们要先文件的存储介质開始--磁盘 磁盘是计算机系统的一个硬件设备,文件系统为了可以管理磁盘.对其进行了三层抽象(本文全部内容均指UNIX ...
- jQuery07源码 (3803 , 4299) attr() prop() val() addClass()等 : 对元素属性的操作
var nodeHook, boolHook, rclass = /[\t\r\n\f]/g, rreturn = /\r/g, rfocusable = /^(?:input|select|text ...
- 【基础篇】DatePickerDialog日期控件的基本使用(一)
项目步骤: 1.首先在Main.xml布局文件中添加一个Button标签,用来点击显示日期控件,Main.xml内容如下: <RelativeLayout xmlns:android=" ...