Posted in Javascript onJanuary 02, 2010
- 输入一个关键词,鼠标点击后面的搜索引擎链接,即可进入到该引擎的页面
- 如果输入关键词后敲回车,则使用默认搜索引擎,而每选择新的搜索引擎,默认引擎也会随之改变
- 自动记忆上次使用的搜索引擎,后面添加*
源代码如下,使用了多种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 多种搜索引擎集成的页面实现代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@