用javascript打造搜索工具栏
电子科技大学软件学院03级2班 周银辉
一:最终效果
二:原理
如果你在yahoo中搜索“中国”,那么在浏览器的地址栏将得到这样一串地址:http://search.cn.yahoo.com/search?ei=gbk&fr=fp-tab-web-ycn&meta=vl%
3dlang_zh-cn%26vl%3dlang_zh-tw&pid=ysearch&source=ysearch_www_hp_button
&p=%d6%d0%b9%fa&submit=
看上去有些乱了,简化一下:http://search.cn.yahoo.com/search?&p=%d6%d0%b9%fa
这就是关键.其中&p=%d6%d0%b9%fa是搜索的关键字参数,而%d6%d0%b9%fa是“中国”的
url编码。ok,我们只要能构造出这样的编码就好了。
三:url编码
javascript的encodeuricomponent()函数可以完成编码工作。
比如上面的例子我们可以用“http://search.cn.yahoo.com/search?&p=”+encodeuricomponent(“中国”);来完成。
四:代码
(点击加号展开)
1 <%@ page language="c#" autoeventwireup="true" codefile="search.aspx.cs" inherits="search" %>
2
3 <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title>search</title>
8 <script language="javascript" type="text/javascript">
9 // <!cdata[
10
11 function getencodeofkey()
12 {
13 var strkey = window.document.getelementbyid("text_key").value;
14 return encodeuricomponent(strkey);
15 }
16
17 function geturl(site)
18 {
19 var encode=getencodeofkey();
20
21 //web
22 if(document.getelementbyid("radiobuttonlist_kind_0").checked)
23 {
24 if(site=="google")
25 {
26 return "http://www.google.com/search?q="+encode+"&ei=utf-8";
27 }
28 else
29 {
30 return "http://search.yahoo.com/search?p="+encode+"&ei=utf-8";
31 }
32 }
33 //mp3
34 else if(document.getelementbyid("radiobuttonlist_kind_1").checked)
35 {
36 if(site=="google")
37 {
38 return "http://www.google.com/search?q="+encode+" mp3"+"&ei=utf-8";
39 }
40 else
41 {
42 return "http://audio.search.yahoo.com/search/audio?&p="+encode+"&ei=utf-8";
43
44 }
45 }
46 //img
47 else if(document.getelementbyid("radiobuttonlist_kind_2").checked)
48 {
49 if(site=="google")
50 {
51 return "http://images.google.com/images?q="+encode+"&ei=utf-8";
52 }
53 else
54 {
55 return "http://images.search.yahoo.com/search/images?p="+encode+"&ei=utf-8";
56 }
57 }
58 else
59 {
60 //alert("err");
61 }
62
63
64 }
65
66 function button_google_onclick()
67 {
68 window.open(geturl("google"));
69 }
70
71 function button_yahoo_onclick()
72 {
73 window.open(geturl("yahoo"));
74 }
75
76 // ]]>
77 </script>
78 </head>
79 <body>
80 <form id="form1" runat="server">
81 <div>
82 <br />
83 <br />
84 <strong><span style="font-size: 24pt; color: #336633">search<br />
85 </span></strong>
86 </div>
87 <hr style="position: relative" />
88 <br />
89 <table style="left: 0px; position: relative; top: 0px">
90 <tr>
91 <td style="width: 31px; height: 21px">
92 <span style="font-family: terminal">key</span></td>
93 <td style="width: 253px; height: 21px">
94 <input id="text_key" style="width: 248px; position: relative" type="text" /></td>
95 <td style="width: 175px; height: 21px">
96 <asp:radiobuttonlist id="radiobuttonlist_kind" runat="server" repeatdirection="horizontal"
97 style="position: relative" font-names="terminal">
98 <asp:listitem selected="true">web</asp:listitem>
99 <asp:listitem>mp3</asp:listitem>
100 <asp:listitem>image</asp:listitem>
101 </asp:radiobuttonlist></td>
102 </tr>
103 <tr>
104 <td style="width: 31px">
105 </td>
106 <td colspan="2">
107 <input id="button_google" style="width: 80px; position: relative" type="button" value="google" onclick="return button_google_onclick()" />
108
109 <input id="button_yahoo" style="left: -29px; width: 104px; position: relative" type="button"
110 value="yahoo!" onclick="return button_yahoo_onclick()" /></td>
111 </tr>
112 </table>
113 <br />
114 <hr style="position: relative" />
115 <asp:hyperlink id="hyperlink_home" runat="server" navigateurl="~/default.aspx" style="position: relative">home</asp:hyperlink></form>
116 </body>
117 </html>
118
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!


