用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 >Search<br />
85 </span></strong>
86 </div>
87 <hr />
88 &
nbsp; <br />
89 <table >
90 <tr>
91 <td >
92 <span >Key</span></td>
93 <td >
94 <input id="Text_Key" type="text" /></td>
95 <td >
96 <ASP:RadioButtonList ID="RadioButtonList_Kind" runat="server" RepeatDirection="Horizontal"
97 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 >
105 </td>
106 <td colspan="2">
107
; <input id="Button_Google" type="button" value="Google" onclick="return Button_Google_onclick()" />
108
109 <input id="Button_Yahoo" type="button"
110 value="Yahoo!" onclick="return Button_Yahoo_onclick()" /></td>
111 </tr>
112 </table>
113 <br />
114 <hr />
115 <asp:HyperLink ID="HyperLink_Home" runat="server" NavigateUrl="~/Default.aspx" >Home</ASP:HyperLink></form>
116 </body>
117 </Html>
118