您的位置:首页 > 运维架构

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

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

tab.js 代码

/*蓝天互联修改版: 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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐