<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[Designnull - JS Lab]]></title>
<link>http://www.designnull.com/</link>
<description><![CDATA[专注]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[ihongcn@gmail.com(Designnull)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>Designnull</title>
	<url>http://www.designnull.com/images/logos.gif</url>
	<link>http://www.designnull.com/</link>
	<description>Designnull</description>
</image>

			<item>
			<link>http://www.designnull.com/article.asp?id=18</link>
			<title><![CDATA[超漂亮,提取自ZCMS的弹出层]]></title>
			<author>ihongcn@gmail.com(admin)</author>
			<category><![CDATA[JS Lab]]></category>
			<pubDate>Thu,22 Oct 2009 10:34:26 +0800</pubDate>
			<guid>http://www.designnull.com/default.asp?id=18</guid>
		<description><![CDATA[<img src="http://www.designnull.com/download.asp?id=21" border="0" alt=""/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code92370);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.designnull.com/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code92370>&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank" rel="external">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=gb2312&#34; /&gt;<br/>&lt;title&gt;【强烈推荐】 超漂亮的仿腾讯弹出层效果（兼容主流浏览器）&lt;/title&gt;<br/>&lt;style&gt;<br/>body {background: #ffffff;&#160;&#160;&#160;&#160;color: #444;}<br/>a{&#160;&#160;&#160;&#160;color: #09d;&#160;&#160;&#160;&#160;text-decoration: none;&#160;&#160;&#160;&#160;border: 0;&#160;&#160;&#160;&#160;background-color: transparent;}<br/>body,div,q,iframe,form,h5{&#160;&#160;&#160;&#160;margin: 0;&#160;&#160;&#160;&#160;padding: 0;}<br/>img,fieldset { border: none 0; }<br/>body,td,textarea {&#160;&#160;&#160;&#160;word-break: break-all;&#160;&#160;&#160;&#160;word-wrap: break-word;&#160;&#160;&#160;&#160;line-height:1.5;}<br/>body,input,textarea,sel&#101;ct,button {&#160;&#160;&#160;&#160;margin: 0;&#160;&#160;&#160;&#160;font-size: 12px;&#160;&#160;&#160;&#160;font-family: Tahoma, SimSun, sans-serif;}<br/>div,p,table,th,td {&#160;&#160;&#160;&#160;font-size:1em;&#160;&#160;&#160;&#160;font-family:inherit;&#160;&#160;&#160;&#160;line-height:inherit;}<br/>h5{ font-size:12px;}<br/>&lt;/style&gt;<br/>&lt;script type=&#34;text/javascript&#34; src=&#34;<a href="http://www.5-studio.com/wp-content/uploads/2009/06/Dialog.js" target="_blank" rel="external">http://www.5-studio.com/wp-content/uploads/2009/06/Dialog.js</a>&#34;&gt;&lt;/script&gt;<br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/>function $(ele) {<br/>&nbsp;&nbsp;if (typeof(ele) == &#39;string&#39;){<br/>&nbsp;&nbsp;&nbsp;&nbsp;ele = document.getElementById(ele)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!ele){<br/>&nbsp;&nbsp;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(ele){<br/>&nbsp;&nbsp;&#160;&#160;&#160;&#160;Core.attachMethod(ele);<br/>&#160;&#160;&#160;&#160;}<br/>&nbsp;&nbsp;return ele;<br/>}<br/>var Core = {};<br/>Core.attachMethod = function(ele){<br/>&#160;&#160;&#160;&#160;if(!ele||ele[&#34;$A&#34;]){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if(ele.nodeType==9){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;var win;<br/>&#160;&#160;&#160;&#160;try{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(isGecko){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;win = ele.ownerDocument.defaultView;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;win = ele.ownerDocument.parentWindow;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for(var prop in $E){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ele[prop] = win.$E[prop];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}catch(ex){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//alert(&#34;Core.attachMethod:&#34;+ele)//有些对象不能附加属性，如flash<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>function zOpenD(){<br/>&#160;&#160;&#160;&#160;var diag = new Dialog(&#34;Diag1&#34;);<br/>&#160;&#160;&#160;&#160;diag.Width = 900;<br/>&#160;&#160;&#160;&#160;diag.Height = 400;<br/>&#160;&#160;&#160;&#160;diag.Title = &#34;弹出窗口示例&#34;;<br/>&#160;&#160;&#160;&#160;diag.URL = &#34;<a href="http://demo.zving.com/" target="_blank" rel="external">http://demo.zving.com/</a>&#34;;<br/>&#160;&#160;&#160;&#160;diag.ShowMessageRow = true;<br/>&#160;&#160;&#160;&#160;diag.MessageTitle = &#34;弹出窗口示例&#34;;<br/>&#160;&#160;&#160;&#160;diag.Message = &#34;在这儿你可以对这个窗口的内容或功能作一些说明&#34;;<br/>&#160;&#160;&#160;&#160;diag.OKEvent = zAlert;//点击确定后调用的方法<br/>&#160;&#160;&#160;&#160;diag.show();<br/>}<br/>function zOpen(){<br/>&#160;&#160;&#160;&#160;var diag = new Dialog(&#34;Diag2&#34;);<br/>&#160;&#160;&#160;&#160;diag.Width = 900;<br/>&#160;&#160;&#160;&#160;diag.Height = 400;<br/>&#160;&#160;&#160;&#160;diag.Title = &#34;弹出窗口示例&#34;;<br/>&#160;&#160;&#160;&#160;diag.URL = &#34;<a href="http://demo.zving.com/" target="_blank" rel="external">http://demo.zving.com/</a>&#34;;<br/>&#160;&#160;&#160;&#160;diag.OKEvent = zAlert;//点击确定后调用的方法<br/>&#160;&#160;&#160;&#160;diag.show();<br/>}<br/>function zAlert(){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dialog.alert(&#34;滤爸要来了，河谐你，河谐我，河谐二十一世纪的新一代&#34;);<br/>}<br/>function zConfirm(){<br/>&#160;&#160;&#160;&#160;Dialog.confirm(&#39;警告：您确认要XXOO吗？&#39;,function(){Dialog.alert(&#34;yeah，周末到了，正是好时候&#34;);});<br/>}<br/>function sometext(ele,n){<br/>&#160;&#160;&#160;&#160;var strArr=[&#34;可&#34;,&#34;以&#34;,&#34;清&#34;,&#34;心&#34;,&#34;也&#34;];<br/>&#160;&#160;&#160;&#160;var writeStr=&#34;&#34;<br/>&#160;&#160;&#160;&#160;for(i=0;i&lt;n;i++){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;index=parseInt(Math.random()*5);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for(j=0;j&lt;5;j++){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;str=index+j&gt;4?index+j-5:index+j;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;writeStr+=strArr[str];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;$(ele).innerHTML=writeStr;<br/>}<br/>&lt;/script&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;div id=&#34;div1&#34;&gt;&lt;/div&gt;<br/>&lt;p&gt;  &nbsp;&nbsp;  &lt;input type=&#34;button&#34; value=&#34;弹出新窗口&#34; onclick=&#34;zOpen()&#34; /&gt; &lt;input type=&#34;button&#34; value=&#34;弹出带说明的新窗口&#34; onclick=&#34;zOpenD()&#34; /&gt; &lt;input type=&#34;button&#34; value=&#34;弹出信息提示对话框&#34; onclick=&#34;zAlert()&#34; /&gt; &lt;input type=&#34;button&#34; value=&#34;弹出选择对话框&#34; onclick=&#34;zConfirm()&#34; /&gt;&lt;/p&gt;<br/>&lt;div id=&#34;div2&#34;&gt;&lt;/div&gt;<br/>&lt;script&gt;sometext(&#34;div1&#34;,100);sometext(&#34;div2&#34;,300);&lt;/script&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</div></div><br/><span id="down_l22gnl0brj"></span><script language="javascript" type="text/javascript">check('Action.asp?action=Antidown&id=22&downurl=download%2Easp%3Fid%3D22&main=%E7%82%B9%E5%87%BB%E4%B8%8B%E8%BD%BD%E6%AD%A4%E6%96%87%E4%BB%B6','down_l22gnl0brj','down_l22gnl0brj');</script><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.designnull.com/article.asp?id=15</link>
			<title><![CDATA[Jquery Tools]]></title>
			<author>ihongcn@gmail.com(admin)</author>
			<category><![CDATA[JS Lab]]></category>
			<pubDate>Tue,29 Sep 2009 10:05:39 +0800</pubDate>
			<guid>http://www.designnull.com/default.asp?id=15</guid>
		<description><![CDATA[<img src="http://www.designnull.com/download.asp?id=19" border="0" alt=""/><br/>Jquery Tools　一套Web UI 库，包括 Tab 容器，可折叠容器，工具提示，浮动层以及可滚动容器等<br/><a href="http://flowplayer.org/tools/demos/index.html" target="_blank" rel="external">http://flowplayer.org/tools/demos/index.html</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.designnull.com/article.asp?id=8</link>
			<title><![CDATA[用 Javascript 实现锚点(Anchor)间平滑跳转]]></title>
			<author>ihongcn@gmail.com(admin)</author>
			<category><![CDATA[JS Lab]]></category>
			<pubDate>Thu,09 Jul 2009 09:51:56 +0800</pubDate>
			<guid>http://www.designnull.com/default.asp?id=8</guid>
		<description><![CDATA[配合fixed使用，<a target="_blank" href="http://www.57joy.com/newspaper.html" rel="external">效果</a>不错，不过IE6不支持fixed,<a target="_blank" href="http://www.designnull.com/weblog/article.asp?id=7" rel="external">解决方法在这里</a><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code76891);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.designnull.com/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code76891>&lt;script type=&#34;text/javascript&#34;&gt; <br/>// 说明 ：用 Javascript 实现锚点(Anchor)间平滑跳转 <br/>// 来源 ：ThickBox 2.1 <br/>// 整理 ：Yanfu Xie [xieyanfu@yahoo.com.cn] <br/>// 网址 ：<a href="http://www.codebit.cn" target="_blank" rel="external">http://www.codebit.cn</a><br/>// 日期 ：07.01.17<br/>// 转换为数字<br/>function intval(v) {&nbsp;&nbsp;&nbsp;&nbsp; v = parseInt(v);&nbsp;&nbsp;&nbsp;&nbsp; return isNaN(v) ? 0 : v; }&nbsp;&nbsp;<br/>// 获取元素信息<br/>function getPos(e) {<br/>&#160;&#160;&#160;&#160;var l = 0;<br/>&#160;&#160;&#160;&#160;var t&nbsp;&nbsp;= -111;<br/>&#160;&#160;&#160;&#160;var w = intval(e.style.width);<br/>&#160;&#160;&#160;&#160;var h = intval(e.style.height);<br/>&#160;&#160;&#160;&#160;var wb = e.offsetWidth;<br/>&#160;&#160;&#160;&#160;var hb = e.offsetHeight;<br/>&#160;&#160;&#160;&#160;while (e.offsetParent){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;t += e.offsetTop&nbsp;&nbsp;+ (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e = e.offsetParent;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;t&nbsp;&nbsp;+= e.offsetTop&nbsp;&nbsp;+ (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);<br/>&#160;&#160;&#160;&#160;return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};<br/>}&nbsp;&nbsp;<br/>// 获取滚动条信息<br/>function getScroll(){<br/>&#160;&#160;&#160;&#160;var t, l, w, h;<br/>&#160;&#160;&#160;&#160;if (document.documentElement &amp;&amp; document.documentElement.scrollTop) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;t = document.documentElement.scrollTop;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l = document.documentElement.scrollLeft;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;w = document.documentElement.scrollWidth;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;h = document.documentElement.scrollHeight;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else if (document.body) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;t = document.body.scrollTop;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l = document.body.scrollLeft;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;w = document.body.scrollWidth;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;h = document.body.scrollHeight;<br/>&#160;&#160;&#160;&#160;} <br/>return { t: t, l: l, w: w, h: h }; }&nbsp;&nbsp;<br/>// 锚点(Anchor)间平滑跳转<br/>function scroller(el, duration) {<br/>&#160;&#160;&#160;&#160;if(typeof el != &#39;object&#39;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;el = document.getElementById(el); }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(!el) return;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var z = this;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.el = el;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.p = getPos(el);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.s = getScroll();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.clear = function(){window.clearInterval(z.timer);z.timer=null};<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.t=(new Date).getTime();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.step = function(){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var t = (new Date).getTime();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var p = (t - z.t) / duration;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (t &gt;= duration + z.t) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.clear();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;window.setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;z.scroll(st, sl);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>};<br/>z.scroll = function (t, l){window.scrollTo(l, t)};<br/>z.timer = window.setInterval(function(){z.step();},13); }<br/>&lt;/script&gt; </div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.designnull.com/article.asp?id=5</link>
			<title><![CDATA[使用jQuery及Bing API实现简易搜索引擎]]></title>
			<author>ihongcn@gmail.com(admin)</author>
			<category><![CDATA[JS Lab]]></category>
			<pubDate>Fri,03 Jul 2009 16:07:44 +0800</pubDate>
			<guid>http://www.designnull.com/default.asp?id=5</guid>
		<description><![CDATA[微软在今年六月正式发布了Live搜索的继承者Bing，同时也提供了一套非常全面的API。如同Google API，通过使用Bing API，Web开发者可以在网站中集成bing搜索中的各种服务，从而丰富网站功能，并为网站带来流量。CSS9.NET在本篇文章通过一个完整的使用示例，向大家展示如何使用jQuery来调用Bing API实现简单的Web搜索引擎，并对Bing API有一个基本的了解。<br/><br/>首先我们来感性感受一下：<a target="_blank" href="http://css9.net/examples/200906/jquery_bing/" rel="external">在线示例</a><br/><br/>Bing API提供了三种检索结果数据类型：SOAP、XML、JSON，在示例中是通过jQuery ajax调用json数据类型接口展示数据的。下面我们来看它的实现：<br/><br/>准备工作：<br/><br/>微软通过Bing API站点向我们展示了详细的开发文档：<br/><br/>1.访问bing开发者站点：<a href="http://bing.com/developers" target="_blank" rel="external">http://bing.com/developers</a>，在这里也可以找到Bing API在MSDN上的入口<br/>2.使用微软的账户登录（没有只能先注册一个啦）<br/>3.填写表格，获取“APP ID”（用来调用API时用的，微软要确定你是微软的开发者）<br/>HTML部分<br/><br/>页面元素很简单，主要包括检索入口、结果显示区域、结果描述、错误信息显示及翻页导航五部分，下面看HTML：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code91231);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.designnull.com/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code91231><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&#34;line search-content&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&#34;column col-threefifths&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h3 id=&#34;results-header&#34;&gt;&lt;/h3&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p id=&#34;results-summary&#34;&gt;&lt;/p&gt;<br/>&lt;!--结果显示区域--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&#34;search-result&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h3&gt;搜索结果&lt;/h3&gt;<br/>&lt;!-- 结果描述，例如总共多少条，但前是哪些条 --&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&#34;result-aggregates&#34; class=&#34;results&#34;&gt;&lt;/div&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul id=&#34;result-list&#34; class=&#34;results&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br/>&lt;!--翻页导航--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul id=&#34;result-navigation&#34; class=&#34;result-navigation&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li id=&#34;prev&#34;&gt;«&lt;/li&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li id=&#34;next&#34;&gt;»&lt;/li&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br/>&lt;!--错误信息显示--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p id=&#34;error-list&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/p&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br/>&lt;!-- 搜索入口 --&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&#34;column last-col&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h3&gt;输入搜索词:&lt;/h3&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input id=&#34;txtQuery&#34; type=&#34;text&#34; title=&#34;Search Terms&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button id=&#34;btnSearch&#34; type=&#34;button&#34; title=&#34;搜索&#34;&gt;搜索&lt;/button&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/p&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;通过jQuery调用Bing API部分<br/><br/>1.定义Bing API需要传入的一些参数： <br/>&nbsp;&nbsp;&nbsp;&nbsp;//申请的APP ID，这里换成你自己的。<br/>&nbsp;&nbsp;&nbsp;&nbsp;var AppId = &#34;AppId=31F3C13DC5D41C42D4A18F9E04DE1DEA73762186&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//通过用户输入搜索词获得检索串<br/>&nbsp;&nbsp;&nbsp;&nbsp;var Query = &#34;Query=&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//指定检索来源类型，Bing提供了网页、视频、图片等所有类型，参考API<br/>&nbsp;&nbsp;&nbsp;&nbsp;//这里指定的是网页类型<br/>&nbsp;&nbsp;&nbsp;&nbsp;var Sources = &#34;Sources=Web&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//指定API版本<br/>&nbsp;&nbsp;&nbsp;&nbsp;var Version = &#34;Version=2.0&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//指定所在地区，如google，每个地区搜索结果是不一样的，这里指定中国<br/>&nbsp;&nbsp;&nbsp;&nbsp;var Market = &#34;Market=zh-cn&#34;; <br/>&nbsp;&nbsp;&nbsp;&nbsp;//一些选项设置，这里开启搜索结果中的搜索词高亮<br/>&nbsp;&nbsp;&nbsp;&nbsp;var Options = &#34;Options=EnableHighlighting&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//每页返回条数<br/>&nbsp;&nbsp;&nbsp;&nbsp;var WebCount = 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//当前为第几页，从0开始的<br/>&nbsp;&nbsp;&nbsp;&nbsp;var WebOffset = 0;2.为搜索按钮绑定处理方法：<br/><br/>$(function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;#btnSearch&#39;).click(function() {<br/>//这里调用最关键的Search方法，取数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search();<br/>&nbsp;&nbsp;&nbsp;&nbsp;});<br/>});3.下面来看最关键的Search部分，调用API获取结果数据：<br/><br/>$(function() {<br/>function Search() {<br/> <br/>//获取用户输入的搜索词，并替换空格为“+”<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var searchTerms = $(&#39;#txtQuery&#39;).val().replace(&#34; &#34;, &#34;+&#34;);<br/> <br/>//防止传输中文时产生乱码<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searchTerms = encodeURI(searchTerms);&nbsp;&nbsp; <br/> <br/>//将接口需要的所有参数封装为数组<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var arr = [AppId, Query + searchTerms, Sources, Version, Market, Options, &#34;Web.Count=&#34; + WebCount, &#34;Web.Offset=&#34; + WebOffset, &#34;JsonType=callback&#34;, &#34;JsonCallback=?&#34;];<br/> <br/>//将参数数组拼装成url串，最终得到bing的URL Service的请求URL<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var requestStr = &#34;<a href="http://api.search.live.net/json.aspx?" target="_blank" rel="external">http://api.search.live.net/json.aspx?</a>&#34; + arr.join(&#34;&amp;&#34;);<br/> <br/>//通过jquery ajax调用bing json数据接口<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type: &#34;GET&#34;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: requestStr,<br/> //指定数据类型为jsonp<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType: &#34;jsonp&#34;,&nbsp;&nbsp;<br/> <br/>//调用成功后返回数据对象，并调用处理方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success: function(msg) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchCompleted(msg);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error: function(msg) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&#34;Something hasn&#39;t worked\n&#34; + msg.d);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>});<br/></div></div><br/>我们看到在使用jquery ajax时，指定数据类型为jsonp，jsonp是一种可跨域访问的协议，我对其也不是非常清楚，可以在这里了解一下。另外 CSS9.NET 也计划在后面的文章中讲解json的相关知识，敬请关注。 <br/><br/>4.再来看获取到数据后的UI处理，主要包括显示结果和显示错误信息两部分：<br/><br/> <div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code17126);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.designnull.com/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code17126><br/>&nbsp;&nbsp;&nbsp;&nbsp;function SearchCompleted(response) {<br/>//检查结果数据对象中的Errors对象，判断是否发生错误<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var errors = response.SearchResponse.Errors;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (errors != null) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 发生错误的话调用错误信息显示方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayErrors(errors);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 没有错误的话调用结果信息显示方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayResults(response);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}下面是显示结果方法，因为要改变UI，所以代码多一点，不过这里可以感受一下jquery中dom操作的灵活。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;function DisplayResults(response) {<br/>//清空结果列表<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;#result-list&#34;).html(&#34;&#34;);&nbsp;&nbsp;<br/> //清空翻页导航<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;#result-navigation li&#34;).filter(&#34;.nav-page&#34;).remove();&nbsp;&nbsp; <br/>// 清空结果描述信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;#result-aggregates&#34;).children().remove(); <br/> <br/>//获取结果数据对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var results = response.SearchResponse.Web.Results;&nbsp;&nbsp;<br/> <br/>//描述信息部分，即总过多少条，当前是哪些条<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;#result-aggregates&#39;).prepend(&#34;&lt;p&gt;检索词： &#34; + response.SearchResponse.Query.SearchTerms + &#34;&lt;/p&gt;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;#result-aggregates&#39;).prepend(&#34;&lt;p id=\&#34;result-count\&#34;&gt;当前显示 &#34; + StartOffset(results)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ &#34; 至 &#34; + EndOffset(results)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ &#34;  总共:&#34; + parseInt(response.SearchResponse.Web.Total) + &#34;&lt;/p&gt;&#34;);<br/> <br/>//创建结果列表，把每一项要显示的内容放在一个数组中<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var link = [];&nbsp;&nbsp;<br/>//因为开启了搜索词高亮选项，这里进行高亮匹配<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var regexBegin = new RegExp(&#34;\uE000&#34;, &#34;g&#34;);&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var regexEnd = new RegExp(&#34;\uE001&#34;, &#34;g&#34;);&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0; i &lt; results.length; ++i) {<br/>//创建每一结果项的信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link[i] = &#34;&lt;li&gt;&lt;a href=\&#34;&#34; + results[i].Url + &#34;\&#34; title=\&#34;&#34; + results[i].Title + &#34;\&#34;&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ results[i].Title + &#34;&lt;/a&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ &#34;&lt;p&gt;&#34; + results[i].Description + &#34;&lt;p&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ &#34;&lt;p class=\&#34;result-url\&#34;&gt;&#34; + results[i].Url + &#34;&lt;/p&gt;&lt;/li&gt;&#34;;<br/> <br/>//搜索词加粗显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link[i] = link[i].replace(regexBegin, &#34;&lt;strong&gt;&#34;).replace(regexEnd, &#34;&lt;/strong&gt;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>//在页面结果区域显示结果列表&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(&#34;#result-list&#34;).html(link.join(&#39;&#39;)); <br/> <br/>//处理导航区域<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cr&#101;ateNavigation(response.SearchResponse.Web.Total, results.length);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/></div></div><br/><br/>导航部分代码比较简单，就不在这里大块的贴了，直接下载代码看吧。<br/><br/>下载：<a target="_blank" href="http://css9.net/wp-content/uploads/2009/06/jquerybing_demo.zip" rel="external">示例源码</a><br/><br/>另外，在MSDN的bing api部分为开发者提供了非常多的代码实例，感兴趣的可以去看。<br/>]]></description>
		</item>
		
</channel>
</rss>
