SmartNav.js
上传用户:wenllgg125
上传日期:2020-04-09
资源大小:7277k
文件大小:9k
源码类别:

SCSI/ASPI

开发平台:

Others

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