Ajax标签导航效果(仿网易首页)

  根据yaohaixiao的Ajax标签导航效果:http://www.blueidea.com/tech/web/2006/4144.asp改进。

  效果:

  http://www.lorlo.com/tab.html

  主要是改了JS:

  

复制代码 代码如下:

  <!--

  function getObject(objectId) {

  if(document.getElementById && document.getElementById(objectId)) {

  // W3C DOM

  return document.getElementById(objectId);

  }

  else if (document.all && document.all(objectId)) {

  // MSIE 4 DOM

  return document.all(objectId);

  }

  else if (document.layers && document.layers[objectId]) {

  // NN 4 DOM.. note: this won't find nested layers

  return document.layers[objectId];

  }

  else {

  return false;

  }

  }

  var responsecont;

  var xmlHttp;

  var requestType;

  var newsstring;

  var ajccache=new Object();//缓存已访问的数据页面

  var url;

  var MouseDelayTime=150;//鼠标感应延迟

  var waitInterval;

  function CreateXMLHttpRequest(){

  // Initialize Mozilla XMLHttpRequest object

  if (window.XMLHttpRequest){

  xmlHttp = new XMLHttpRequest();

  }

  // Initialize for IE/Windows ActiveX version

  else if (window.ActiveXObject) {

  try{

  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");

  }

  catch (e){

  try{

  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

  }

  catch (e){newsstring = "<div class='loading'>Loading rquest content fail, Please try it again latter...</div>";}

  }

  }

  }

  function getnews(tagid,x){

  url = "tab/"+tagid+'_'+x+'.html';

  //   var loadstatustext="<div class='loading'><img src='images/loading.gif' /> Loading request content, please wait...</div>";

  requestType = tagid;

  if(ajccache[url]==null){

  CreateXMLHttpRequest();

  //   getObject(requestType+'_cnt').innerHTML = loadstatustext;

  xmlHttp.onreadystatechange = processRequestChange;

  xmlHttp.open("GET", url, true);

  xmlHttp.setRequestHeader("If-Modified-Since","0");

  xmlHttp.send(null);

  }

  else

  {  shownews(requestType,ajccache[url]);    }

  }

  function processRequestChange(){

  // only if xmlHttp shows "complete"

  if (xmlHttp.readyState == 4){

  // only http 200 to process

  if (window.location.href.indexOf("http")==-1 || xmlHttp.status == 200){

  newsstring = xmlHttp.responseText;

  //inject centent to tab-pane

  shownews(requestType,newsstring);

  ajccache[url]=newsstring;    //把已访问的数据缓存下来

  }

  }

  }

  function shownews(requestType,newsstring){

  //<![CDATA[

  responsecont = getObject(requestType+'_cnt');

  responsecont.innerHTML = newsstring;

  //]]>

  }

  function TabNews(tagid,x){

  for (var i=1;i<=7;i+=2) {

  if (i == x) {

  getObject(tagid+i).className="tabactive"+i;

  if(i!=1){

  getObject(tagid+(i-1)).style.display="none";

  if(i!=7){

  getObject(tagid+(i+1)).style.display="none";

  }

  }

  if(i==1){

  getObject(tagid+"2").style.display="none";

  }

  try{

  getnews(tagid,i);

  }

  catch(e){

  alert(e);

  }

  }

  else

  {

  getObject(tagid+i).className="";

  if(i!=7){

  getObject(tagid+(i+1)).style.display="block";

  }

  }

  }

  }

  var idn;

  function aet(objid,tagid,etp){    //为LI加上事件    objid:容器ID  tagid:组别   etp:触发类型 0-onmouseover 1-onclick

  var iif=0;

  var lis=objid.getElementsByTagName('li');

  requestType=tagid;

  url = "tab/"+requestType+"_1.html";

  ajccache[url]=getObject(requestType+'_cnt').innerHTML;

  for(var iy=0;iy<lis.length;iy++){

  if(iif==0){

  iif=1;

  with(lis[iy]){

  if(etp==0){

  lis[iy].onmouseover=function(){

  if(this.status=="active") return;

  requestType=attributes.getNamedItem('id').value.substring(0, attributes.getNamedItem('id').value.length-1);

  idn=parseInt(attributes.getNamedItem('id').value.substring(attributes.getNamedItem('id').value.length-1, attributes.getNamedItem('id').value.length));

  clearTimeout(waitInterval);

  waitInterval=window.setTimeout("TabNews(requestType,idn);",MouseDelayTime);

  }

  lis[iy].onmouseout=function(){if(this.status=="active") return;clearTimeout(waitInterval);}

  }

  if(etp==1){

  lis[iy].onmouseover=function(){}

  lis[iy].onclick=function(){

  if(this.status=="active") return;

  requestType=attributes.getNamedItem('id').value.substring(0, attributes.getNamedItem('id').value.length-1);

  idn=parseInt(attributes.getNamedItem('id').value.substring(attributes.getNamedItem('id').value.length-1, attributes.getNamedItem('id').value.length));

  var loadstatustext="<div class='loading'><img src='images/loading.gif' /> Loading request content, please wait...</div>";

  getObject(requestType+'_cnt').innerHTML = loadstatustext;

  TabNews(requestType,idn);

  }}}}

  else{iif=0;}

  }

  }

  function ata(objid){    //一个无关的函数,为解决一个链接问题

  var as=objid.getElementsByTagName('a');

  for(var i=0;i<as.length;i++){

  as[i].pathname="/showfile.html";

  }

  }

  //-->