AJAX初级应用-RSS无刷新聚合器的代码与下载第1/3页
rss.js
<!--
//控制id
function getid(objid){
return document.getelementbyid(objid)
}
//链接对应数组,请注明转载自http://www.cnrui.cn/blog
function urlarrary(urlname){
switch(urlname){
case "clear":
return "http://www.cnrui.cn/blog/feed.asp"
case "a-fei":
return "http://www.a-fei.net/blog/rss.xml"
case "ryanxia":
return "http://www.ryanxia.com/blog/feedrss2.asp"
case "awflasher":
return "http://www.awflasher.com/blog/feed.asp"
case "seles":
return "http://www.cnrui.cn/seles/feedrss2.asp"
case "wawa":
return "http://a-fei.net/wawa/blog/rss2.php"
case "dreammx":
return "http://www.dreammx.com/xhyl/feed.asp"
default:
return false
}
}
//侧边栏控制,请注明自http://www.cnrui.cn/blog转载
function closebar(targetid,objid){
if(document.getelementbyid){
target = getid(targetid);
objsty = getid(objid);
if(target.style.display == "none"){
target.style.display = "";
main.style.width = "800px";
objsty.innerhtml = "关闭侧边栏"
}else{
target.style.display = "none";
main.style.width = "100%";
objsty.innerhtml = "开启侧边栏"
}
}
}
//加载变灰,注明自http://www.cnrui.cn/blog转载
function listen(a){
getid("prolist").classname=a;
}
function btnsty(objid,objstyle)
{
getid(objid).style.display = objstyle
}
//提示窗口控制
function ifodis(){
btnsty("loadifo","none");
}
function settime(a){
settimeout(a,1000);
}
function loadtime(){
getid("loadifo").innerhtml += "."
}
//数据入口
function ent(urlname){
window.location.hash = urlname
var frmurl = savestate(urlname);//写入信息到ifream
var gamestart = loadrss(urlname);//ajax数据过程
}
//xml数据绑定
var xmldoc = false;
function loadrss(urlname){
var myurl = urlarrary(urlname)
if(myurl){
listen("mainbg2");
//生成随机数,同时限制刷新次数
var num=math.floor(math.random()*100);
//定义往址参数
url = myurl+"?id="+num;
//定义为异步传输模式
xmldoc = false;
//mozill,safari等浏览器时需要创建的xmlhttp类
if(window.xmlhttprequest){
xmldoc = new xmlhttprequest();
if(xmldoc.overridemimetype){
xmldoc.overridemimetype('text/xml');
}
}
//ie浏览器时创建的xmlhttp类
else if(window.activexobject){
try{
xmldoc = new activexobject("msxml3.xmlhttp");
}
catch(e){
try{
xmldoc = new activexobject("msxml2.xmlhttp");
}
catch(e){
try{
xmldoc = new activexobject("microsoft.xmlhttp");
}
catch(e){}
}
}
}
//不能创建xmlhttp类时返回
if(! xmldoc){
return false;
}
//调用checkstate函数
xmldoc.onreadystatechange = checkstate;
xmldoc.open('get',url,true);
xmldoc.send(null);
}else{
getid("listnum").innerhtml = "您输入的地址错误,请重试!"
}
}
//状态检测
function checkstate(){
var response = xmldoc.responsexml.documentelement;
btnsty("loadifo","block")
//收到完整的服务器响应
if(xmldoc.readystate == 1){
getid("loadifo").innerhtml = "连接服务器"
}
else if(xmldoc.readystate == 2){
getid("loadifo").innerhtml = "开始加载数据"
}
else if(xmldoc.readystate == 3){
getid("loadifo").innerhtml = "正在加载数据"
settime(loadtime)
}
else if(xmldoc.readystate == 4){
//http服务器响应值成功
if(xmldoc.status == 200){
//将服务器返回的字符串写到页面中id为showdiv的区域
getid("loadifo").innerhtml = "加载完成"
settime(ifodis)
num(response)
}
else{
getid("loadifo").innerhtml = "错误"+xmldoc.status+"点这里刷新";
}
}
}
//检查数据合法性
function trydata(nodename,nodename2){
try{
var nodev = nodename.firstchild.nodevalue;
}catch(e){
try{
var nodev = nodename2.firstchild.nodevalue;
}catch(e){
var nodev = "没有可用信息"
}
}
return nodev;
}
//记录集总数
function num(b){
try{
var titlenode = b.selectnodes("//rss/channel/title");
var a = b.getelementsbytagname("item").length
titlev = trydata(titlenode(0));
getid("listnum").innerhtml = "共有"+a+"篇文章 来源于:"+titlev;
setlist(a,b);
}catch(e){}
}
if (top.location != self.location)top.location=self.location;
//节目列表显示
//定义接收指向各个元素的节点信息的变量
var titlenode,linknode,categorynamenode,authornode,pubdatenode,descriptionnode
//定义接收元素值的变量
var titlev,linkv,categorynamev,authorv,pubdatev,descriptionv
//分类聚合
function setlist(a,b)
{
var progranode = b.getelementsbytagname("item");
var adminlinknode = b.selectnodes("//rss/channel/link");
var titlenode = b.selectnodes("//rss/channel/item/title");
var linknode = b.selectnodes("//rss/channel/item/link");
var categorynode = b.selectnodes("//rss/channel/item/category");
var authornode = b.selectnodes("//rss/channel/item/author");
var pubdatenode = b.selectnodes("//rss/channel/item/pubdate");
var descriptionnode = b.selectnodes("//rss/channel/item/description");
var category2snode = b.selectnodes("//rss/channel/item/dc:subject");
var author2snode = b.selectnodes("//rss/channel/item/dc:creator");
var pubdate2snode = b.selectnodes("//rss/channel/item/dc:date");
var listchar=""
//使用for循环,产生列表信息
for (i=0; i<a; i++)
{
titlev = trydata(titlenode(i))
linkv = trydata(linknode(i))
categoryv = trydata(categorynode(i),category2snode(i))
authorv = trydata(authornode(i),author2snode(i))
pubdatev = trydata(pubdatenode(i),pubdate2snode(i))
descriptionv = trydata(descriptionnode(i))
adminlinkv = trydata(adminlinknode(0))
//将得到的元素值装载到产生表格的字符串中
listchar += "<h5><a href='"+linkv+"' target='_blank'>"+titlev+"</a></h5><span>发表时间:"+pubdatev+"</span><div class='article'>"+descriptionv+"</div><div class='bottom'>文章分类:"+categoryv+" <a href='"+adminlinkv+"' target='_blank'>作者:"+authorv+"</a></div>";
}
//将生成的表格输出到页面的div元素
getid("prolist").innerhtml = listchar;
listen("mainbg")
}
//浏览器回退部分
//重写ifream链接,浏览器回退重点
function savestate(message) {
var hisfrm = getid("historyframe")
hisfrm.src = "blank.html?"+message
}
//检测ifream
window.dhtmlhistory = {
iframeloaded:function(newlocation){
var hash = new string(newlocation.search)
if (hash.length >= 2 && hash.charat(0) == "?" && hash.substring(1) !=delchar()){
hash = hash.substring(1)
window.location.hash = hash;
var hisfrmdata = loadrss(hash)
}
}
}
//浏览器链接指向部分
//去除符号,请注明http://www.cnrui.cn/blog转载
function delchar(){
var a = window.location.hash
return a.substring(1)
}
window.onload = function(){
if(window.location.hash.length >= 2){
ent(delchar())
}
}
// -->
1
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
7月15日笔试总结
测验项目:3C数码商城+简答题+选择题测验时间:3小时不足之处:简答题3道题留白,完全不懂,仍需复习,一道题简写...
[阅读全文]
-
-
-
-
-
原生AJAX
AJAXAJAX 是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部...
[阅读全文]
-
-
网友评论