+ -
当前位置:首页 → 问答吧 → 帝国CMS的tab框不能在Opera等正常运行的修正

帝国CMS的tab框不能在Opera等正常运行的修正

时间:2010-07-29

来源:互联网

  本次修正主要是针对帝国CMS中skin/default/js/tabs.js 源文件的修正,在其默认的tabs.js中仅仅考虑了IE的情况,而没有考虑到其他浏览器的兼容性,从而造成首页的tab框不能在Opera等浏览器正常运行,这是因为在IE上空白节点不算DOM节点,而在Opera、火狐等浏览器上却算,下面js代码就是针对此问题的修正,修正的代码如下:

tab.js 代码


JScript code
/*栖息地修改版: www.skyln.net , 解决此文件在Opera、火狐等浏览器空节点取属性值的错误*/     
     
function $xudtitle(str){      
    document.title = str;      
}      
//在IE上空白节点不算,在Opera、火狐等浏览器上算.等于在IE上数量为4,在Opera、火狐等就为9      
function $xu(id){      
    return document.getElementById(id);      
}      
//是否元素节点      
function $xuisele(id){      
    var node = $xu(id);      
    if(node && node.nodeType ==1)      
        return true;      
    return false ;      
}      
//取元素中第一个子元素节点      
function $xufelenode(id){      
    var node = $xu(id);      
    while(node && node.nodeType !=1)      
        node = node.nextSibling();      
    return node ;      
}      
function $xushow(id){      
    $xu(id).style.display = "" ;      
}      
function $xublock(id){      
    $xu(id).style.display = "block" ;      
}      
function $xuhide(id){      
    $xu(id).style.display = "none" ;      
}      
     
function tabit(btn){      
    var idname = new String(btn.id);      
    var s = idname.indexOf("_");      
    var e = idname.lastIndexOf("_")+1;      
    var tabName = idname.substr(0, s);      
    var id = parseInt(idname.substr(e, 1));      
    var tabNumber = btn.parentNode.childNodes.length;      
    for(i=0;i<tabNumber;i++){      
              
        if ($xuisele(tabName+"_btn_"+i)) {      
            $xu(tabName+"_btn_"+i).className = "";      
        }      
    };      
    btn.className = "curr";      
};      
     
function etabit(btn){      
    var idname = new String(btn.id);      
    var s = idname.indexOf("_");      
    var e = idname.lastIndexOf("_")+1;      
    var tabName = idname.substr(0, s);      
    var id = parseInt(idname.substr(e, 1));      
          
    var tabNumber = btn.parentNode.childNodes.length;      
    for(i=0;i<tabNumber;i++){      
        if ($xuisele(tabName+"_div_"+i)) {      
            $xuhide(tabName+"_div_"+i);      
            $xu(tabName+"_btn_"+i).className = "";      
        }      
    };      
    document.getElementById(tabName+"_div_"+id).style.display = "block";      
    btn.className = "curr";      
}; 


【本文来源】:栖息地( http://www.skyln.net ),转载请以链接形式注明出处 
【原文链接】:http://www.skyln.net/tech/jbjq/634.html

作者: skyln   发布时间: 2010-07-29

去帝国论坛问啊

作者: net_lover   发布时间: 2010-07-29

引用 1 楼 net_lover 的回复:
去帝国论坛问啊

这似乎不是在问吧?呵呵

作者: skyln   发布时间: 2010-07-29