当前位置: 移动技术网 > IT编程>脚本编程>Ajax > AJAX初级应用-RSS无刷新聚合器的代码与下载第1/3页

AJAX初级应用-RSS无刷新聚合器的代码与下载第1/3页

2018年05月29日  | 移动技术网IT编程  | 我要评论
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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网