javascript 多种搜索引擎集成的页面实现代码


Posted in Javascript onJanuary 02, 2010

- 输入一个关键词,鼠标点击后面的搜索引擎链接,即可进入到该引擎的页面
- 如果输入关键词后敲回车,则使用默认搜索引擎,而每选择新的搜索引擎,默认引擎也会随之改变
- 自动记忆上次使用的搜索引擎,后面添加*
javascript 多种搜索引擎集成的页面实现代码
源代码如下,使用了多种IE/FF的适应办法:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<style type="text/css"> 
<!-- 
.normal {font-family: "Verdana","Arial";font-size:14px} 
.small {font-family: "Verdana","Arial";font-size:12px} 
body { font-family: "Verdana","Arial";font-size:14px} 
td {font-family: "Verdana","Arial";font-size:14px} 
th {font-family: "Verdana","Arial";font-size:15px} 
input {font-family: "Verdana","Arial";font-size:14px} 
a {text-decoration:underline; color:blue} 
a:link { text-decoration:underline; color: blue } 
a:visited { text-decoration:underline; color: blue } 
a:hover { text-decoration: underline; color: red } 
--> 
</style> 
<title>My Portal</title> 
<script language="javascript"> 
// 这一段使得FireFox也支持IE的innerText方法 
function isIE(){ 
if (window.navigator.userAgent.toLowerCase().indexOf("msie")>=1) 
return true; 
else 
return false; 
} 
if(!isIE()){ //firefox innerText define 
HTMLElement.prototype.__defineGetter__( "innerText", 
function(){ 
var anyString = ""; 
var childS = this.childNodes; 
for(var i=0; i <childS.length; i++) { 
if(childS[i].nodeType==1) 
anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText; 
else if(childS[i].nodeType==3) 
anyString += childS[i].nodeValue; 
} 
return anyString; 
} 
); 
HTMLElement.prototype.__defineSetter__( "innerText", 
function(sText){ 
this.textContent=sText; 
} 
); 
} 
// 这一段使得FireFox的HTMLElement具有click方法(add click method to HTMLElement in Mozilla) 
try { 
// create span element so that HTMLElement is accessible 
document.createElement('span'); 
HTMLElement.prototype.click = function () { 
if (typeof this.onclick == 'function') 
this.onclick({type: 'click'}); 
}; 
} 
catch (e) { 
// alert('click method for HTMLElement couldn\'t be added'); 
} 
// 对HTMLAnchorElement 加入onclick事件 
try { 
// create a element so that HTMLAnchorElement is accessible 
document.createElement('a'); 
HTMLElement.prototype.click = function () { 
if (typeof this.onclick == 'function') { 
if (this.onclick({type: 'click'}) && this.href) 
window.open(this.href, this.target? this.target : '_self'); 
} 
else if (this.href) 
window.open(this.href, this.target? this.target : '_self'); 
}; 
} 
catch (e) { 
// alert('click method for HTMLAnchorElement couldn\'t be added'); 
} 
// 跟踪回车键事件 
function captureKeys (evt) { 
var keyCode = evt.keyCode ? evt.keyCode : 
evt.charCode ? evt.charCode : evt.which; 
if (keyCode == 13) { 
// cancel key: 
if (evt.preventDefault) { 
evt.preventDefault(); 
} 
var dq = getCookie('default-engine'); 
if( dq == null) dq = "baidu_txt"; 
submit_query( dq ); 
return false; 
} 
return true; 
} 
// cookie 功能函数 
function getCookie(cookieName) 
{ 
var cookieString = document.cookie; 
var start =cookieString.indexOf(cookieName+'='); 
if(start == -1) 
return null; 
start += cookieName.length + 1; 
var end = cookieString.indexOf(';', start); 
if(end == -1) 
return unescape(cookieString.substring(start)); 
return unescape(cookieString.substring(start,end)); 
} 
function setCookie(cookieName, cookieValue) 
{ 
var expires = new Date(); 
expires.setTime( expires.getTime() + 3*30*24*60*60*1000); // 3 months 
document.cookie = cookieName + '=' + escape(cookieValue)+';expires='+expires.toGMTString(); 
} 
function removeCookie(cookieName) 
{ 
var expires = new Date(); 
expires.setTime( expires.getTime() - 1); 
document.cookie = cookieName + '=fooxxx;expires='+expires.toGMTString(); 
} 
function $(id) { 
return document.getElementById(id); 
} 
// 调式Object用,适用于IE,Firefox下可用firebug 
function dumpObject(obj) 
{ 
var temp=""; 
for (x in obj) 
temp += x + ": " + obj[x] + "\n"; 
var popup = window.createPopup(); 
popup.document.body.innerHTML = '<textarea rows=30 cols=40>' + temp + '</textarea>'; 
popup.show(100, 100, 300, 400, document.body); 
} 
// 多种查询引擎请求分派 
function submit_query(t_query) 
{ 
var keyword = document.getElementById("keyword"); 
var mylink = document.getElementById("mylink"); 
var loc = ""; 
switch(t_query) 
{ 
case "baidu_txt": 
loc = "http://www.baidu.com/s?wd=" + keyword.value; 
break; 
case "baidu_img": 
loc = "http://image.baidu.com/i?ct=201326592&lm=-1&tn=baiduimagenojs&pv=&word=" + keyword.value + "&z=0&pn=0&rn=16&cl=2"; 
break; 
case "yodao_txt": 
loc = "http://www.yodao.com/search?q=" + encodeURI(keyword.value) + "&ue=utf8&keyfrom=web.index"; 
break; 
case "yodao_img": 
loc = "http://image.yodao.com/search?q=" + encodeURI(keyword.value) + "&ue=utf8&keyfrom=image.index"; 
break; 
case "yodao_dict": 
loc = "http://dict.yodao.com/search?q=" + encodeURI(keyword.value) + "&ue=utf8&keyfrom=dict.index"; 
break; 
case "yodao_blog": 
loc = "http://blog.yodao.com/search?q=" + encodeURI(keyword.value) + "&ue=utf8&keyfrom=blog.top"; 
break; 
case "iask_ditu": 
loc = "http://ditu.iask.com/a/r.php?cl=北京&key=" + keyword.value; 
break; 
case "verycd": 
loc = "http://www.verycd.com/search/folders/" + encodeURI(keyword.value); 
break; 
case "google_txt": 
loc = encodeURI("http://www.google.com/search?hl=en&q=" + keyword.value +"&btnG=Google+Search"); 
break; 
case "yahoo_txt": 
loc = "http://search.yahoo.com/search?p="+encodeURI(keyword.value)+"&vc=&fr=yfp-t-501&toggle=1&cop=mss&ei=UTF-8&fp_ip=CN"; 
break; 
case "trans_en": 
loc = "http://209.85.171.104/translate_c?hl=en&sl=en&tl=zh-CN&u=http://" + keyword.value + "/&usg=ALkJrhijPevZUxPtrHDj94k1U9Wo8x7S8g"; 
break; 
case "google_code": 
loc = "http://www.google.com/codesearch?q=" + keyword.value + "&hl=en&btnG=Search+Code"; 
break; 
case "google_scholar": 
loc = "http://scholar.google.com/scholar?q=" + keyword.value + "&hl=en&lr=&btnG=Search"; 
break; 
} 
setEngine(t_query); 
setCookie('default-engine', t_query); 
mylink.href= loc; 
mylink.click(); 
} 
function getDefaultEngine() 
{ 
var dq = getCookie('default-engine'); 
if( dq == null) dq = "baidu_txt"; 
return dq; 
} 
function setDefaultEngine() 
{ 
var old_e = getDefaultEngine(); 
if( $(old_e).innerText.indexOf('*') < 0) 
$(old_e).innerText = $(old_e).innerText + '*'; 
} 
function setEngine( new_e ) 
{ 
var old_e = getDefaultEngine(); 
if( $(old_e).innerText.indexOf('*') >= 0) 
$(old_e).innerText = $(old_e).innerText.replace('*',''); 
if( $(new_e).innerText.indexOf('*') < 0) 
$(new_e).innerText = $(new_e).innerText + '*'; 
setCookie('default-engine', new_e); 
} 
</script> 
</head> 
<body onload='setDefaultEngine()'> 
<table border="0" width="100%"> 
<tr><td> 
<a href="http://www.google.com" id="mylink" target="_blank">Search:</a> 
<input type="text" name="keyword" size="20" id="keyword" onkeypress="return captureKeys(event);"> 
<a href="#" id='baidu_txt' onclick="submit_query('baidu_txt')">百度</a>  
<a href="#" id='google_txt' onclick="submit_query('google_txt')">Google</a>  
<a href="#" id='yodao_txt' onclick="submit_query('yodao_txt')">有道</a>  
<a href="#" id='yodao_blog' onclick="submit_query('yodao_blog')">博客</a>  
<a href="#" id='google_code' onclick="submit_query('google_code')">代码</a>  
<a href="#" id='google_scholar' onclick="submit_query('google_scholar')">论文</a>  
<a href="#" id='baidu_img' onclick="submit_query('baidu_img')">百图</a>  
<a href="#" id='yodao_img' onclick="submit_query('yodao_img')">有图</a>  
<a href="#" id='yodao_dict' onclick="submit_query('yodao_dict')">词典</a>  
<a href="#" id='iask_ditu' onclick="submit_query('iask_ditu')">地图</a>  
<a href="#" id='verycd' onclick="submit_query('verycd')">CD</a>  
<a href="#" id='yahoo_txt' onclick="submit_query('yahoo_txt')">Yahoo</a>  
<a href="#" id='trans_en' onclick="submit_query('trans_en')">翻译</a>  
</td></tr> 
</table> 
</body> 
</html>
Javascript 相关文章推荐
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
Jan 09 Javascript
Web层改进II-用xmlhttp 无声息提交复杂表单
Jan 22 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
Jan 15 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
jQuery 追加元素的方法如append、prepend、before
Jan 16 Javascript
js控制TR的显示隐藏
Mar 04 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
需要牢记的JavaScript基础知识
Sep 25 Javascript
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 #Javascript
javascript getElementsByClassName 和js取地址栏参数
Jan 02 #Javascript
firefox插件Firebug的使用教程
Jan 02 #Javascript
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 #Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 #Javascript
20个非常棒的Jquery实用工具 国外文章
Jan 01 #Javascript
JavaScript与DropDownList 区别分析
Jan 01 #Javascript
You might like
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php 用sock技术发送邮件的函数
2007/07/21 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
jQuery 选择器理解
2010/03/16 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
Python自定义主从分布式架构实例分析
2016/09/19 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
工厂厂长岗位职责
2013/11/08 职场文书
团队经理竞聘书
2014/03/31 职场文书
施工安全协议书范本
2014/09/26 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android