Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1500958
  • 博文数量: 213
  • 博客积分: 10418
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 23:49
文章分类

全部博文(213)

文章存档

2014年(1)

2013年(5)

2012年(11)

2011年(2)

2010年(8)

2009年(26)

2008年(160)

分类: 网络与安全

2012-04-25 17:55:44

什么是RSS? 
    RSS是一种网页内容联合格式(web content sydication format)。 
    它的名字是Really Simple Syndication的缩写。 
    RSS是XML的一种。所有的RSS文档都遵循XML 1.0规范,该规范发布在W3C网站上。 
     
    在一个RSS文档的开头是一个节点和一个规定的属性version,该属性规定了该文档将以RSS的哪个版本表示。如果该文档以这个规范来表示,那么它的version属性就必须等于2.0。 
     
    在节点的下一级是一个独立的节点,该节点包含关于channel的信息和内容。 
     
关于本文档     
    该文档是在2002年秋天撰写的,当时的RSS版本为2.0.1。 
    它包含从RSS 0.91规范(2000年)开始的所有的修改和添加,以及包含在RSS 0.92(2000年12月)和RSS 0.94(2002年8月)中的新的特性。 
    
必需的频道节点 
    下面有一份必须包含的频道(channel)节点的列表,每一个都有一个简单的描述、一个例子、应该出现的位置和更详细描述的超链接。 
   

元素描述范例
title频道(channel)名称。它可以告诉别人如何访问你的服务。如果你有一个与你的RSS文件内容一致的HTML网站,你的title元素值应该与你的网站的标题相同。GoUpstate.com News Headings
link响应该频道的网站的URL
description关于该频道的描述The latest news from GoUpstate.com, a Spartanburg Herald-Joural Web Site

可选的频道元素 
    下面是可选的频道元素列表 
 
节点描述范例
language 使用的语言。这允许聚合器对所有的意大利语站点分组。en-us
copyright版权声明 Copyright 2002, Spartanburg Herald-Journal
managingEditor内容负责人的Emailgeo@herald.com (George Matesky)
webMaster技术人员的Emailbetty@herald.com (Betty Guernsey)
pubDate内容的发布时间Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate最后更新时间Sat, 07 Sep 2002 09:42:31 GMT
category指定该频道所属的一个或多个分类。遵循与item级category元素相同的规则。Newspapers
generator生成该频道的程序名称MightyInHouse Content System v2.3
docs指向rss格式文档的url地址?http://blogs.law.harvard.edu/tech/rss
cloud允许所有进程注册一个cloud用于获得频道的更新通知,并为rss种子实现一个轻量级的发布订阅协议。
ttlttl是Time to live的缩写。它指示cache的有效保存时间。60
image与频道一起显示的图片地址 
rating该频道的统计图片地址 
textInput指定一个textbox与该频道一起显示 
skipHours告诉使用者哪些时段是可以忽略的 
skipDays告诉使用着哪些天是可以忽略的 

子节点 
是一个可选的子节点,该节点包含三个必需的子元素和三个可选的子元素。 
是GIF、JPEG或PNG图像文件的URL地址,该图像代表整个频道 
用于描述上面的图像,等同于HTML语言中的<img>的alt属性 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><link>是要连接的站点的url,当显示频道时,图像的连接指向该站点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><title>和<link>应该与频道的<title>和<link>有相同的值 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">可选的节点包括<width>和<height>,它们是数字类型,指定图像的宽度和高度,单位为像素 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><description>就是link的TITLE属性中文本,它将在调用网页时显示出来。 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">图像宽度的最大值为144,默认值为88 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">图像高度的最大值为400,默认值为31 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><channel>子节点<cloud></strong><span style="color: rgb(51, 51, 51); "> </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><cloud>是一个可选的<channel>子节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">它指定一个可以支持rssCloud接口的web服务,rssCloud接口可以用HTTP-POST,XML-RPC或SOAP1.1实现。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">它的目的是允许通知注册为cloud的进程频道被更新,从而实现一个轻量级的发布订阅协议。 </span><br style="color: rgb(51, 51, 51); "><div twffan="done" style="color: rgb(51, 51, 51); background-color: rgb(230, 230, 230); border-right-color: windowtext; border-right-width: 0.5pt; border-right-style: solid; padding-right: 5.4pt; border-top-color: windowtext; border-top-width: 0.5pt; border-top-style: solid; padding-left: 5.4pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding-bottom: 4px; border-left-color: windowtext; border-left-width: 0.5pt; border-left-style: solid; width: 632px; padding-top: 4px; border-bottom-color: windowtext; border-bottom-width: 0.5pt; border-bottom-style: solid; height: 50px; background-position: 0% 50%; "><div twffan="done"><span twffan="done" style="color: rgb(0, 0, 255); "><</span><span twffan="done" style="color: rgb(128, 0, 0); ">cloud </span><span twffan="done" style="color: rgb(255, 0, 0); ">domain</span><span twffan="done" style="color: rgb(0, 0, 255); ">="rpc.sys.com"</span><span twffan="done" style="color: rgb(255, 0, 0); "> port</span><span twffan="done" style="color: rgb(0, 0, 255); ">="80"</span><span twffan="done" style="color: rgb(255, 0, 0); "> path</span><span twffan="done" style="color: rgb(0, 0, 255); ">="/RPC2"</span><span twffan="done" style="color: rgb(255, 0, 0); "> registerProcedure</span><span twffan="done" style="color: rgb(0, 0, 255); ">= "myCloud.rssPleaseNotify"</span><span twffan="done" style="color: rgb(255, 0, 0); "> protocol</span><span twffan="done" style="color: rgb(0, 0, 255); ">="xml-rpc"</span><span twffan="done" style="color: rgb(255, 0, 0); "> </span><span twffan="done" style="color: rgb(0, 0, 255); ">/></span></div></div><span style="color: rgb(51, 51, 51); ">在这个例子中,为了请求频道通知,你需要发送一个XML-RPC消息到rpc.sys.com的80端口,路径为/RPC2。调用的过程为myCloud.rssPleaseNotify。 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><channel>子节点<ttl></strong><span style="color: rgb(51, 51, 51); "> </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><ttl>是一个可选的<channel>子节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">ttl是time to live的缩写。它表示频道在被刷新前应该被缓存的时间。这使得rss源可以被一个支持文件共享的网络所管理,例如</span><span style="color: rgb(51, 51, 51); ">例如:<ttl>60</ttl> </span><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><br><channel>子节点<textInput> <br></strong><span style="color: rgb(51, 51, 51); "><textInput>是<channel>的可选的子节点,<textInput>包含四个子节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><title>--提交按钮的标签 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><description>--该文本输入区的描述 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><name>--文本输入区的名称 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><link>--处理文本输入的CGI脚本的URL </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">使用<textInput>的目的有些神秘(?)。你可以用它提供一个搜索引擎输入框,或让读者提供反馈信息。许多聚合器忽略该节点。 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><item>的节点</strong><span style="color: rgb(51, 51, 51); "> </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">一个频道可以包含许多项目(item)节点。一个项目可以代表一个故事——比如说一份报纸或杂志上的故事,如果是这样的话,那么项目的描述则是故事的概要,项目的链接则指向整个故事的存放位置。项目的所有节点都是可选的,但是至少要包含至少一个标题(title)和描述(description)。 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><table cellspacing="0" cellpadding="3" summary="" border="1" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px; text-align: left; border-collapse: collapse; "><tbody><tr><td width="100">节点</td><td>描述</td><td>范例</td></tr><tr><td>title</td><td>item的标题</td><td>Venice Film Festival Tries to Quit Sinking</td></tr><tr><td>link</td><td>item的URL</td><td> </td></tr><tr><td>description</td><td>item概要</td><td>Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.</td></tr><tr><td>author</td><td>作者的email地址</td><td></td></tr><tr><td>category</td><td>item可以包含在一个或多个分类中</td><td>Simpsons Characters</td></tr><tr><td>comments</td><td>与item相关的评论的地址</td><td>http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290</td></tr><tr><td>enclosure</td><td>附加的媒体对象</td><td> </td></tr><tr><td>guid</td><td>可以唯一确定item的字符串</td><td></td></tr><tr><td>pubDate</td><td>item发布的时间</td><td>Sun, 19 May 2002 15:21:36 GMT</td></tr><tr><td>source</td><td>rss频道来源</td><td>Quotes of the Day</td></tr></tbody></table><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><item>子节点<source></strong><span style="color: rgb(51, 51, 51); "> </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); "><source>是<item>的可选节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">它的值是item来自的rss频道的名称,从item的title衍生而来。它有一个必须包含的属性url, 该属性链接到XML序列化源。 </span><br style="color: rgb(51, 51, 51); "><div twffan="done" style="color: rgb(51, 51, 51); background-color: rgb(230, 230, 230); border-right-color: windowtext; border-right-width: 0.5pt; border-right-style: solid; padding-right: 5.4pt; border-top-color: windowtext; border-top-width: 0.5pt; border-top-style: solid; padding-left: 5.4pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding-bottom: 4px; border-left-color: windowtext; border-left-width: 0.5pt; border-left-style: solid; width: 680px; padding-top: 4px; border-bottom-color: windowtext; border-bottom-width: 0.5pt; border-bottom-style: solid; background-position: 0% 50%; "><div twffan="done"><span twffan="done" style="color: rgb(0, 0, 255); "><</span><span twffan="done" style="color: rgb(128, 0, 0); ">source </span><span twffan="done" style="color: rgb(255, 0, 0); ">url</span><span twffan="done" style="color: rgb(0, 0, 255); ">=""</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span><span twffan="done" style="color: rgb(0, 0, 0); ">Tomalak's Realm</span><span twffan="done" style="color: rgb(0, 0, 255); "></</span><span twffan="done" style="color: rgb(128, 0, 0); ">source</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span></div></div><span style="color: rgb(51, 51, 51); ">该节点的作用是提高连接的声望,进一步推广新闻项目的源头。它可以用在聚合器的Post命令中。当从聚合器通过webblog访问一个item时,<source>能够自动被生成。 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><item>子节点<enclosure> <br></strong><span style="color: rgb(51, 51, 51); "><enclosure>是<item>的可选节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">它有三个必要的属性。url属性指示enclosure的位置,length指出它的字节大小,type属性指出它的标准MIME类型 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">url必须为一个http url。 </span><br style="color: rgb(51, 51, 51); "><div twffan="done" style="color: rgb(51, 51, 51); background-color: rgb(230, 230, 230); border-right-color: windowtext; border-right-width: 0.5pt; border-right-style: solid; padding-right: 5.4pt; border-top-color: windowtext; border-top-width: 0.5pt; border-top-style: solid; padding-left: 5.4pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding-bottom: 4px; border-left-color: windowtext; border-left-width: 0.5pt; border-left-style: solid; width: 599px; padding-top: 4px; border-bottom-color: windowtext; border-bottom-width: 0.5pt; border-bottom-style: solid; height: 35px; background-position: 0% 50%; "><div twffan="done"><span twffan="done" style="color: rgb(0, 0, 255); "><</span><span twffan="done" style="color: rgb(128, 0, 0); ">enclosure </span><span twffan="done" style="color: rgb(255, 0, 0); ">url</span><span twffan="done" style="color: rgb(0, 0, 255); ">=""</span><span twffan="done" style="color: rgb(255, 0, 0); "> length</span><span twffan="done" style="color: rgb(0, 0, 255); ">="12216320"</span><span twffan="done" style="color: rgb(255, 0, 0); "> type</span><span twffan="done" style="color: rgb(0, 0, 255); ">="audio/mpeg"</span><span twffan="done" style="color: rgb(255, 0, 0); "> </span><span twffan="done" style="color: rgb(0, 0, 255); ">/></span></div></div><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><item>子节点<category> <br></strong><span style="color: rgb(51, 51, 51); "><category>是<item>的可选节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">它有一个可选属性或域,该属性是一个用来定义分类法的字符串。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">该节点的值是一个正斜杠分割的字符串,它用来在指定的分类法中识别一个分级位置(hierarchic  location)。处理器可以为分类的识别建立会话。(Processors may establish conventions for the interpretation of categories)下面有两个例子: </span><br style="color: rgb(51, 51, 51); "><div twffan="done" style="color: rgb(51, 51, 51); background-color: rgb(230, 230, 230); border-right-color: windowtext; border-right-width: 0.5pt; border-right-style: solid; padding-right: 5.4pt; border-top-color: windowtext; border-top-width: 0.5pt; border-top-style: solid; padding-left: 5.4pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding-bottom: 4px; border-left-color: windowtext; border-left-width: 0.5pt; border-left-style: solid; width: 680px; padding-top: 4px; border-bottom-color: windowtext; border-bottom-width: 0.5pt; border-bottom-style: solid; background-position: 0% 50%; "><div twffan="done"><span twffan="done" style="color: rgb(0, 0, 255); "><</span><span twffan="done" style="color: rgb(128, 0, 0); ">category</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span><span twffan="done" style="color: rgb(0, 0, 0); ">Grateful Dead</span><span twffan="done" style="color: rgb(0, 0, 255); "></</span><span twffan="done" style="color: rgb(128, 0, 0); ">category</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span><span twffan="done" style="color: rgb(0, 0, 0); "> <br></span><span twffan="done" style="color: rgb(0, 0, 255); "><</span><span twffan="done" style="color: rgb(128, 0, 0); ">category </span><span twffan="done" style="color: rgb(255, 0, 0); ">domain</span><span twffan="done" style="color: rgb(0, 0, 255); ">="http://www.fool.com/cusips"</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span><span twffan="done" style="color: rgb(0, 0, 0); ">MSFT</span><span twffan="done" style="color: rgb(0, 0, 255); "></</span><span twffan="done" style="color: rgb(128, 0, 0); ">category</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span></div></div><span style="color: rgb(51, 51, 51); ">你可以根据你的需要为不同的域(domain)包含很多category节点,并且可以在相同域的不同部分拥有一个前后参照的item。 </span><br style="color: rgb(51, 51, 51); "><br style="color: rgb(51, 51, 51); "><strong style="color: rgb(51, 51, 51); "><item>子节点<pubDate> <br></strong><span style="color: rgb(51, 51, 51); "><pubDate>是<item>的可选节点。 </span><br style="color: rgb(51, 51, 51); "><span style="color: rgb(51, 51, 51); ">它的值是item发布的日期。如果它是一个没有到达的日期,聚合器在日期到达之前可以选择不显示该item。 </span><br style="color: rgb(51, 51, 51); "><div twffan="done" style="color: rgb(51, 51, 51); background-color: rgb(230, 230, 230); border-right-color: windowtext; border-right-width: 0.5pt; border-right-style: solid; padding-right: 5.4pt; border-top-color: windowtext; border-top-width: 0.5pt; border-top-style: solid; padding-left: 5.4pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding-bottom: 4px; border-left-color: windowtext; border-left-width: 0.5pt; border-left-style: solid; width: 680px; padding-top: 4px; border-bottom-color: windowtext; border-bottom-width: 0.5pt; border-bottom-style: solid; background-position: 0% 50%; "><div twffan="done"><span twffan="done" style="color: rgb(0, 0, 255); "><</span><span twffan="done" style="color: rgb(128, 0, 0); ">pubDate</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span><span twffan="done" style="color: rgb(0, 0, 0); ">Sun, 19 May 2002 15:21:36 GMT</span><span twffan="done" style="color: rgb(0, 0, 255); "></</span><span twffan="done" style="color: rgb(128, 0, 0); ">pubDate</span><span twffan="done" style="color: rgb(0, 0, 255); ">></span></div></div><p style="color: rgb(51, 51, 51); "><br><strong><item>子节点<guid> <br></strong><guid>是<item>的可选节点。 <br>guid是globally unique identifier的缩写。它是一个可以唯一识别item的字符串。当item发布之后,聚合器可以选择使用该字符串判断该item是否是新的。 <br><font face="Courier New"><guid>http://some.server.com/weblogItem3207</guid></font> <br>guid没有特定的语法规则,聚合器必须将他们看作一个字符串。生成具有唯一性的字符串guid取决于种子的源头。 <br>如果guid节点有isPermaLink属性,并且值为真,读取器就会认为它是item的permalink。permalink是一个可在web浏览器中打开的url链接,它指向<item>节点所描述的全部item。 <br><font face="Courier New"><guid isPermaLink="true"></guid></font></p><p style="color: rgb(51, 51, 51); "><font face="Courier New"></font>isPermaLink是可选属性,默认值为真。如果值为假,guid将不会被认为是一个url或指向任何对象的url。 <br><br><strong><item>子节点<comment> <br> </strong><comment>是<item>的可选节点。 <br>如果出现,它指向该item评论的url <br><comments>http://rateyourmusic.com/yaccs/commentsn/blogId=705245&itemId=271</comments> <br><br><strong><item>子节点<author> <br> </strong><author>是<item>的可选节点。 <br>它是item的作者的email。对于通过rss传播的报纸和杂志,作者可能是写该item所描述的文章的人。对于聚集型webblogs,作者可能不是责任编辑或站长。对于个人维护的webblog,忽略<author>节点是有意义的。 <br><author>lawyer@boyer.net (Lawyer Boyer)</author></p></p><p></p><p></p><p></p> </div> <!-- <div class="Blog_con3_1">管理员在2009年8月13日编辑了该文章文章。</div> --> <div class="Blog_con2_1 Blog_con3_2"> <div> <!--<img src="/image/default/tu_8.png">--> <!-- JiaThis Button BEGIN --> <div class="bdsharebuttonbox"><A class=bds_more href="#" data-cmd="more"></A><A class=bds_qzone title=分享到QQ空间 href="#" data-cmd="qzone"></A><A class=bds_tsina title=分享到新浪微博 href="#" data-cmd="tsina"></A><A class=bds_tqq title=分享到腾讯微博 href="#" data-cmd="tqq"></A><A class=bds_renren title=分享到人人网 href="#" data-cmd="renren"></A><A class=bds_weixin title=分享到微信 href="#" data-cmd="weixin"></A></div> <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> <!-- JiaThis Button END --> </div> 阅读(7423) | 评论(3) | 转发(0) | <div class="HT_line3"></div> </div> <div class="Blog_con3_3"> <div><span id='digg_num'>0</span><a href="javascript:void(0)" id='digg' bid='3189183' url='/blog/digg.html' ></a></div> <p>上一篇:<a href="/uid-11848011-id-3059741.html">解决获取android源码时repo的错误</a></p> <p>下一篇:<a href="/uid-11848011-id-3191213.html">C++的XML编程经验――LIBXML2库使用指南</a></p> </div> </div> <!-- <div class="Blog_con3_4 Blog_con3_5"> <div class="Blog_tit2 Blog_tit7">热门推荐</div> <ul> <li><a href="" title="" target='blank' ></a></li> </ul> </div> --> </div> </div> <div class="Blog_right1_7" id='replyList'> <div class="Blog_tit3">给主人留下些什么吧!~~</div> <!--不包含引用--> <div class="Blog_right1_8"> <div class="Blog_right_img1"><a href='/uid/16844681.html' ><img src="http://account.chinaunix.net/api/avatar.php?uid=16844681" /></a></div> <div class="Blog_right_font1"> <p class="Blog_p5"><span><a href='/uid/16844681.html' ><span>常虫清</span></a></span>2012-05-09 22:45:41</p> <p class="Blog_p6">很好啊,先收藏了~博主好人~~~<img src="/image/face/3.gif" ></p> <div class="div1"><a href="javascript:void(0);" class="Blog_a10" toid='16844681' bid='3189183' cid='570061' tname='常虫清'>回复</a> | <a href="javascript:;" onclick="link(this);showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login');" class='box_report'>举报</a></div> <!-- 评论占位框--> <div class='z_move_comment' style='display:none'> </div> </div> <div class="Blog_line1"></div> </div> <!--不包含引用--> <div class="Blog_right1_8"> <div class="Blog_right_img1"><a href='/uid/18997268.html' ><img src="http://account.chinaunix.net/api/avatar.php?uid=18997268" /></a></div> <div class="Blog_right_font1"> <p class="Blog_p5"><span><a href='/uid/18997268.html' ><span>4大爷</span></a></span>2012-05-08 20:20:52</p> <p class="Blog_p6">讲的很详细啊~博主很给力,多多交流<img src="/image/face/3.gif" ></p> <div class="div1"><a href="javascript:void(0);" class="Blog_a10" toid='18997268' bid='3189183' cid='569920' tname='4大爷'>回复</a> | <a href="javascript:;" onclick="link(this);showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login');" class='box_report'>举报</a></div> <!-- 评论占位框--> <div class='z_move_comment' style='display:none'> </div> </div> <div class="Blog_line1"></div> </div> <!--不包含引用--> <div class="Blog_right1_8"> <div class="Blog_right_img1"><a href='/uid/20842494.html' ><img src="http://account.chinaunix.net/api/avatar.php?uid=20842494" /></a></div> <div class="Blog_right_font1"> <p class="Blog_p5"><span><a href='/uid/20842494.html' ><span>灯泡代表我的心</span></a></span>2012-05-03 22:20:20</p> <p class="Blog_p6">呵呵,很不错。。。多谢了</p> <div class="div1"><a href="javascript:void(0);" class="Blog_a10" toid='20842494' bid='3189183' cid='569484' tname='灯泡代表我的心'>回复</a> | <a href="javascript:;" onclick="link(this);showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login');" class='box_report'>举报</a></div> <!-- 评论占位框--> <div class='z_move_comment' style='display:none'> </div> </div> <div class="Blog_line1"></div> </div> <!-- 评论分页--> <div class="Blog_right1_6 Blog_right1_12"> </div> <!-- 评论分页--> <div class="Blog_right1_10" style="display:none"> <div class="Blog_tit3">评论热议</div> <!--未登录 --> <div class="Blog_right1_8"> <div class="nologin_con1"> 请登录后评论。 <p><a href="http://account.chinaunix.net/login" onclick="link(this)">登录</a> <a href="http://account.chinaunix.net/register?url=http%3a%2f%2fblog.chinaunix.net">注册</a></p> </div> </div> </div> <div style="text-align:center;margin-top:10px;"> <script type="text/javascript" smua="d=p&s=b&u=u3118759&w=960&h=90" src="//www.nkscdn.com/smu0/o.js"></script> </div> </div> </div> </div> <input type='hidden' id='report_url' value='/blog/ViewReport.html' /> <script type="text/javascript"> //测试字符串的长度 一个汉字算2个字节 function mb_strlen(str) { var len=str.length; var totalCount=0; for(var i=0;i<len;i++) { var c = str.charCodeAt(i); if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { totalCount++; }else{ totalCount+=2; } } return totalCount; } /* var Util = {}; Util.calWbText = function (text, max){ if(max === undefined) max = 500; var cLen=0; var matcher = text.match(/[^\x00-\xff]/g), wlen = (matcher && matcher.length) || 0; //匹配url链接正则 http://*** var pattern = /http:\/\/([\w-]+\.)+[\w-]+(\/*[\w-\.\/\?%&=][^\s^\u4e00-\u9fa5]*)?/gi; //匹配的数据存入数组 var arrPt = new Array(); var i = 0; while((result = pattern.exec(text)) != null){ arrPt[i] = result[0]; i++; } //替换掉原文本中的链接 for(var j = 0;j<arrPt.length;j++){ text = text.replace(arrPt[j],""); } //减掉链接所占的长度 return Math.floor((max*2 - text.length - wlen)/2 - 12*i); }; */ var allowComment = '0'; //举报弹出层 function showJuBao(url, cid){ $.cover(false); asyncbox.open({ id : 'report_thickbox', url : url, title : '举报违规', width : 378, height : 240, scroll : 'no', data : { 'cid' : cid, 'idtype' : 2 , 'blogurl' : window.location.href }, callback : function(action){ if(action == 'close'){ $.cover(false); } } }); } $(function(){ //创建管理员删除的弹出层 $('#admin_article_del').click(function(){ $.cover(false); asyncbox.open({ id : 'class_thickbox', html : '<div class="HT_layer3_1"><ul><li class="HT_li1">操作原因:<select class="HT_sel7" id="del_type" name="del_type"><option value="广告文章">广告文章</option><option value="违规内容">违规内容</option><option value="标题不明">标题不明</option><option value="文不对题">文不对题</option></select></li><li class="HT_li1" ><input class="HT_btn4" id="admin_delete" type="button" /></li></ul></div>', title : '选择类型', width : 300, height : 150, scroll : 'no', callback : function(action){ if(action == 'close'){ $.cover(false); } } }); }); $('#admin_delete').live('click' , function(){ ///blog/logicdel/id/3480184/url/%252Fblog%252Findex.html.html var type = $('#del_type').val(); var url = '/blog/logicdel/id/3189183/url/%252Fuid%252F11848011.html.html'; window.location.href= url + '?type=' + type; }); //顶 js中暂未添加&过滤 $('#digg').live('click' , function(){ if(isOnLine == '' ) { //showErrorMsg('登录之后才能进行此操作' , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); return false; } var bid = $('#digg').attr('bid'); var url = $('#digg').attr('url'); var digg_str = $.cookie('digg_id'); if(digg_str != null) { var arr= new Array(); //定义一数组 arr = digg_str.split(","); //字符分割 for( i=0 ; i < arr.length ; i++ ) { if(bid == arr[i]) { showErrorMsg('已经赞过该文章', '消息提示'); return false; } } } $.ajax({ type:"POST", url:url, data: { 'bid' : bid }, dataType: 'json', success:function(msg){ if(msg.error == 0) { var num = parseInt($('#digg_num').html(),10); num += 1; $('#digg_num').html(num); $('#digg').die(); if(digg_str == null) { $.cookie('digg_id', bid, {expires: 30 , path: '/'}); } else { $.cookie('digg_id', digg_str + ',' + bid, {expires: 30 , path: '/'}); } showSucceedMsg('谢谢' , '消息提示'); } else if(msg.error == 1) { //showErrorMsg(msg.error_content , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); } else if(msg.error == 2) { showErrorMsg(msg.error_content , '消息提示'); } } }); }); //举报弹出层 /*$('.box_report').live('click' , function(){ if(isOnLine == '' ) { //showErrorMsg('登录之后才能进行此操作' , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); return false; } var url = $('#report_url').val(); var cid = $(this).attr('cid'); $.cover(false); asyncbox.open({ id : 'report_thickbox', url : url, title : '举报违规', width : 378, height : 240, scroll : 'no', data : { 'cid' : cid, 'idtype' : 2 }, callback : function(action){ if(action == 'close'){ $.cover(false); } } }); });*/ //评论相关代码 //点击回复显示评论框 $('.Blog_a10').live('click' , function(){ if(isOnLine == '' ) { //showErrorMsg('登录之后才能进行此操作' , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); return false; } if(allowComment == 1) { showErrorMsg('该博文不允许评论' , '消息提示'); return false; } var tid = $(this).attr('toid');//留言作者id var bid = $(this).attr('bid');//blogid var cid = $(this).attr('cid');//留言id var tname = $(this).attr('tname'); var tpl = '<div class="Blog_right1_9">'; tpl += '<div class="div2">'; tpl += '<textarea name="" cols="" rows="" class="Blog_ar1_1" id="rmsg">文明上网,理性发言...</textarea>'; tpl += '</div>'; tpl += '<div class="div3">'; tpl += '<div class="div3_2"><a href="javascript:void(0);" class="Blog_a11" id="quota_sbumit" url="/Comment/PostComment.html" tid="'+tid+'" bid="'+bid+'" cid="'+cid+'" tname="'+tname+'" ></a><a href="javascript:void(0)" id="qx_comment" class="Blog_a12"></a></div>'; tpl += '<div class="div3_1"><a href="javascript:void(0);" id="mface"><span></span>表情</a></div>'; tpl += '<div class="clear"></div>'; tpl += '</div>'; tpl += '</div>'; $('.z_move_comment').html(''); $(this).parents('.Blog_right1_8').find('.z_move_comment').html(tpl).show(); }); //引用的评论提交 $('#quota_sbumit').live('click' , function(){ if(isOnLine == '' ) { //showErrorMsg('登录之后才能进行此操作' , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); return false; } var bid = $(this).attr('bid'); var tid = $(this).attr('tid');//被引用人的id var qid = $(this).attr('cid');//引用的id var url = $(this).attr('url'); var text = $('#rmsg').val(); var tname = $(this).attr('tname'); if(text == '' || text=='文明上网,理性发言...') { showErrorMsg('评论内容不能为空!' , '消息提示'); return false; } else { if(mb_strlen(text) > 1000){ showErrorMsg('评论内容不能超过500个汉字' , '消息提示'); return false; } } $.ajax({ type: "post", url: url , data: {'bid': bid , 'to' : tid , 'qid' : qid , 'text': text , 'tname' : tname }, dataType: 'json', success: function(data){ if(data.code == 1){ var tpl = '<div class="Blog_right1_8">'; tpl+= '<div class="Blog_right_img1"><a href="' +data.info.url+ '" >' + data.info.header + '</a></div>'; tpl+= '<div class="Blog_right_font1">'; tpl+= '<p class="Blog_p5"><span><a href="' +data.info.url+ '" >' + data.info.username + '</a></span>' + data.info.dateline + '</p>'; tpl+= '<p class="Blog_p7"><a href="' + data.info.quota.url + '">' + data.info.quota.username + '</a>:'+ data.info.quota.content + '</p>'; tpl+= '<p class="Blog_p8">' + data.info.content + '</p><span class="span_text1"><a href="javascript:void(0);" class="Blog_a10" toid=' + data.info.fuid + ' bid=' + data.info.bid + ' cid=' + data.info.cid + ' tname = ' + data.info.username + ' >回复</a> |  <a class="comment_del_mark" style="cursor:pointer" url="' + data.info.delurl + '" >删除</a> |  <a href="javascript:showJuBao(\'/blog/ViewReport.html\','+data.info.cid+')" class="box_report" cid="' + data.info.cid + '" >举报</a></span></div>'; tpl+= '<div class="z_move_comment" style="display:none"></div>'; tpl+= '<div class="Blog_line1"></div></div>'; $('#replyList .Blog_right1_8:first').before(tpl); $('.z_move_comment').html('').hide(); } else if(data.code == -1){ //showErrorMsg(data.info , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); } }, error: function(){//请求出错处理 } }); }); //底部发表评论 $('#submitmsg').click(function(){ if(allowComment == 1) { showErrorMsg('该博文不允许评论' , '消息提示'); return false; } var bid = $(this).attr('bid'); var toid = $(this).attr('toid'); var text = $('#reply').val(); var url = $(this).attr('url'); if(text == '' || text=='文明上网,理性发言...') { showErrorMsg('评论内容不能为空!' , '消息提示'); return false; } else { if(mb_strlen(text) > 1000){ showErrorMsg('评论内容不能超过500个汉字' , '消息提示'); return false; } } $.ajax({ type: "post", url: url , data: {'bid': bid , 'to' : toid ,'text': text}, dataType: 'json', success: function(data){ if(data.code == 1) { var tpl = '<div class="Blog_right1_8">'; tpl += '<div class="Blog_right_img1"><a href="' +data.info.url+ '" >' + data.info.header + '</a></div>'; tpl += '<div class="Blog_right_font1">'; tpl += '<p class="Blog_p5"><span><a href="' +data.info.url+ '" >' + data.info.username + '</a></span>' + data.info.dateline + '</p>'; tpl += '<p class="Blog_p6">' + data.info.content + '</p>'; tpl += '<div class="div1"><a href="javascript:void(0);" class="Blog_a10" toid=' + data.info.fuid + ' bid=' + data.info.bid + ' cid=' + data.info.cid + '>回复</a> |  <a class="comment_del_mark" style="cursor:pointer" url="' + data.info.delurl + '">删除</a> |  <a href="javascript:showJuBao(\'/blog/ViewReport.html\','+data.info.cid+')" class="box_report" cid="' + data.info.cid + '">举报</a></div>'; tpl += '<div class="z_move_comment" style="display:none"></div>'; tpl += '</div><div class="Blog_line1"></div></div>'; $('.Blog_tit3:first').after(tpl); $('#reply').val('文明上网,理性发言...'); } else if(data.code == -1) { showErrorMsg(data.info , '消息提示'); } }, error: function(){//请求出错处理 } }); }); //底部评论重置 $('#reset_comment').click(function(){ $('#reply').val('文明上网,理性发言...'); }); //取消回复 $('#qx_comment').live('click' , function(){ $('.z_move_comment').html('').hide(); }); $('#rmsg, #reply').live({ focus:function(){ if($(this).val() == '文明上网,理性发言...'){ $(this).val(''); } }, blur:function(){ if($(this).val() == ''){ $(this).val('文明上网,理性发言...'); } } }); //删除留言确认 $('.comment_del_mark').live('click' , function(){ var url = $(this).attr('url'); asyncbox.confirm('删除留言','确认', function(action){ if(action == 'ok') { location.href = url; } }); }); //删除时间确认 $('.del_article_id').click(function(){ var delurl = $(this).attr('delurl'); asyncbox.confirm('删除文章','确认', function(action){ if(action == 'ok') { location.href = delurl; } }); }); /* //字数限制 $('#rmsg, #reply').live('keyup', function(){ var id = $(this).attr('id'); var left = Util.calWbText($(this).val(), 500); var eid = '#errmsg'; if(id == 'reply') eid = '#rerrmsg'; if (left >= 0) $(eid).html('您还可以输入<span>' + left + '</span>字'); else $(eid).html('<font color="red">您已超出<span>' + Math.abs(left) + '</span>字 </font>'); }); */ //加载表情 $('#face').qqFace({id : 'facebox1', assign : 'reply', path : '/image/qqface/'}); $('#mface').qqFace({id : 'facebox', assign : 'rmsg', path:'/image/qqface/'}); /* $('#class_one_id').change(function(){ alert(123213); var id = parseInt($(this).val() , 10); if(id == 0) return false; $('.hidden_son_class span').each(function( index , dom ){ if( dom.attr('cid') == id ) { } }); }); */ //转载文章 var turn_url = "/blog/viewClassPart.html"; $('#repost_bar').click(function(){ if(isOnLine == '' ) { //showErrorMsg('登录之后才能进行此操作' , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); return false; } var id = $(this).attr('bid'); asyncbox.open({ id : 'turn_class_thickbox', url : turn_url, title : '转载文章', width : 330, height : 131, scroll : 'no', data : { 'id' : id }, callback : function(action){ if(action == 'close'){ $.cover(false); } } }); }); /* //转发文章 $('#repost_bar').live('click' , function(){ if(isOnLine == '' ) { //showErrorMsg('登录之后才能进行此操作' , '消息提示'); showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); return false; } var bid = $(this).attr('bid'); var url = $(this).attr('url'); asyncbox.confirm('转载文章','确认', function(action){ if(action == 'ok'){ $.ajax({ type:"POST", url:url, data: { 'bid' : bid }, dataType: 'json', success:function(msg){ if(msg.error == 0){ showSucceedMsg('转发成功!', '消息提示'); }else if(msg.error == 1){ //location.href = '/index.php?r=site/login'; showErrorMsg('操作失败,您需要先登录!', '消息提示', 'http://account.chinaunix.net/login'); }else{ showErrorMsg(msg.error_content, '消息提示'); } } }); } }); }); */ }); </script> <!--该部分应该放在输出代码块的后面才起作用 --> <script type="text/javascript"> SyntaxHighlighter.autoloader( 'applescript /highlight/scripts/shBrushAppleScript.js', 'actionscript3 as3 /highlight/scripts/shBrushAS3.js', 'bash shell /highlight/scripts/shBrushBash.js', 'coldfusion cf /highlight/scripts/shBrushColdFusion.js', 'cpp c /highlight/scripts/shBrushCpp.js', 'c# c-sharp csharp /highlight/scripts/shBrushCSharp.js', 'css /highlight/scripts/shBrushCss.js', 'delphi pascal /highlight/scripts/shBrushDelphi.js', 'diff patch pas /highlight/scripts/shBrushDiff.js', 'erl erlang /highlight/scripts/shBrushErlang.js', 'groovy /highlight/scripts/shBrushGroovy.js', 'java /highlight/scripts/shBrushJava.js', 'jfx javafx /highlight/scripts/shBrushJavaFX.js', 'js jscript javascript /highlight/scripts/shBrushJScript.js', 'perl pl /highlight/scripts/shBrushPerl.js', 'php /highlight/scripts/shBrushPhp.js', 'text plain /highlight/scripts/shBrushPlain.js', 'py python /highlight/scripts/shBrushPython.js', 'ruby rails ror rb /highlight/scripts/shBrushRuby.js', 'scala /highlight/scripts/shBrushScala.js', 'sql /highlight/scripts/shBrushSql.js', 'vb vbnet /highlight/scripts/shBrushVb.js', 'xml xhtml xslt html /highlight/scripts/shBrushXml.js' ); SyntaxHighlighter.all(); function code_hide(id){ var code = document.getElementById(id).style.display; if(code == 'none'){ document.getElementById(id).style.display = 'block'; }else{ document.getElementById(id).style.display = 'none'; } } </script> <!--回顶部js2011.12.30--> <script language="javascript"> lastScrollY=0; function heartBeat(){ var diffY; if (document.documentElement && document.documentElement.scrollTop) diffY = document.documentElement.scrollTop; else if (document.body) diffY = document.body.scrollTop else {/*Netscape stuff*/} percent=.1*(diffY-lastScrollY); if(percent>0)percent=Math.ceil(percent); else percent=Math.floor(percent); document.getElementById("full").style.top=parseInt(document.getElementById("full").style.top)+percent+"px"; lastScrollY=lastScrollY+percent; if(lastScrollY<200) { document.getElementById("full").style.display="none"; } else { document.getElementById("full").style.display="block"; } } var gkuan=document.body.clientWidth; var ks=(gkuan-960)/2-30; suspendcode="<div id=\"full\" style='right:-30px;POSITION:absolute;TOP:500px;z-index:100;width:26px; height:86px;cursor:pointer;'><a href=\"javascript:void(0)\" onclick=\"window.scrollTo(0,0);\"><img src=\"\/image\/top.png\" /></a></div>" document.write(suspendcode); window.setInterval("heartBeat()",1); </script> <!-- footer --> <div class="Blog_footer" style='clear:both'> <div><a href="http://www.chinaunix.net/about/index.shtml" target="_blank" rel="nofollow">关于我们</a> | <a href="http://www.it168.com/bottomfile/it168.shtml" target="_blank" rel="nofollow">关于IT168</a> | <a href="http://www.chinaunix.net/about/connect.html" target="_blank" rel="nofollow">联系方式</a> | <a href="http://www.chinaunix.net/about/service.html" target="_blank" rel="nofollow">广告合作</a> | <a href="http://www.it168.com//bottomfile/flgw/fl.htm" target="_blank" rel="nofollow">法律声明</a> | <a href="http://account.chinaunix.net/register?url=http%3a%2f%2fblog.chinaunix.net" target="_blank" rel="nofollow">免费注册</a> <p>Copyright 2001-2010 ChinaUnix.net All Rights Reserved 北京皓辰网域网络信息技术有限公司. 版权所有 </p> <div>感谢所有关心和支持过ChinaUnix的朋友们 <p><a href="http://beian.miit.gov.cn/">16024965号-6 </a></p> </div> </div> </div> </div> <script language="javascript"> //全局错误提示弹出框 function showErrorMsg(content, title, url){ var url = url || ''; var title = title || '消息提示'; var html = ''; html += '<div class="HT_layer3_1 HT_layer3_2"><ul><li><p><span class="login_span1"></span>' + content + '</p></li>'; if(url == '' || url.length == 0){ html += '<li class="HT_li1"><input type="button" class="HT_btn2" onclick=\'close_windows("error_msg")\'></li>'; } else { html += '<li class="HT_li1"><input type="button" class="login_btn1" onclick="location.href=\'' + url + '\'"></li>'; } html += '</ul></div>'; $.cover(true); asyncbox.open({ id: 'error_msg', title : title, html : html, 'callback' : function(action){ if(action == 'close'){ $.cover(false); } } }); } //全局正确提示 function showSucceedMsg(content, title , url ){ var url = url || ''; var title = title || '消息提示'; var html = ''; html += '<div class="HT_layer3_1 HT_layer3_2"><ul><li><p><span class="login_span2"></span>' + content + '</p></li>'; if(url == '' || url.length == 0){ html += '<li class="HT_li1"><input type="button" class="HT_btn2" onclick=\'close_windows("error_msg")\'></li>'; } else { html += '<li class="HT_li1"><input type="button" class="HT_btn2" onclick="location.href=\'' + url + '\'"></li>'; } html += '</ul></div>'; $.cover(true); asyncbox.open({ id: 'error_msg', title : title, html : html, 'callback' : function(action){ if(action == 'close'){ $.cover(false); } } }); } //关闭指定id的窗口 function close_windows(id){ $.cover(false); $.close(id); } //公告 var tID; var tn; // 高度 var nStopTime = 5000; // 不同行间滚动时间隔的时间,值越小,移动越快 var nSpeed = 50; // 滚动时,向上移动一像素间隔的时间,值越小,移动越快 var isMove = true; var nHeight = 25; var nS = 0; var nNewsCount = 3; /** * n 用于表示是否为第一次运行 **/ function moveT(n) { clearTimeout(tID) var noticev2 = document.getElementById("noticev2") nS = nSpeed; // 只在第一次调用时运行,初始化环境(有没有参数) if (n) { // 设置行高 noticev2.style.lineHeight = nHeight + "px"; // 初始化显示位置 tn = 0; // 刚进入时在第一行停止时间 nS = nStopTime; } // 判断鼠标是否指向层 if (isMove) { // 向上移动一像素 tn--; // 如果移动到最下面一行了,则移到顶行 if (Math.abs(tn) == nNewsCount * nHeight) { tn = 0; } // 设置位置 noticev2.style.marginTop = tn + "px"; // 完整显示一行时,停止一段时间 if (tn % nHeight == 0) { nS = nStopTime; } } tID = setTimeout("moveT()", nS); } moveT(1); // 此处可以传入任何参数 </script> <script type="text/javascript"> // var _gaq = _gaq || []; // _gaq.push(['_setAccount', 'UA-20237423-2']); // _gaq.push(['_setDomainName', '.chinaunix.net']); // _gaq.push(['_trackPageview']); // // (function() { // var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; // ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; // var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); // })(); </script> <script type="text/javascript"> var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F0ee5e8cdc4d43389b3d1bfd76e83216b' type='text/javascript'%3E%3C/script%3E")); function link(t){ var href= $(t).attr('href'); href+="?url="+encodeURIComponent(location.href); $(t).attr('href',href); //setCookie("returnOutUrl", location.href, 60, "/"); } </script> <script type="text/javascript" src="/js/jquery.qqFace.js"></script> </body> </html>