由于window.onfocus,在IE上30分钟不活动初始延迟

时间:2015-11-19 13:16:54

标签: javascript internet-explorer erp onfocus attachedbehaviors

首先发布在这里。我总是在这个网站上找到了很好的答案,但这是我第一次在对我非常具体的问题进行广泛研究后无法自拔。我将一个函数附加到窗口/标签的“onfocus”,它计算了我必须在ERP自己的导航栏中实现的Statuslight上显示的颜色和其他特定变量。因此,在每个焦点上它都会询问信息是否已更改,如果已更改,则会重新加载页面。一切正常,但IE浏览器闲置约30分钟后(该公司仅适用于IE,因此我不必记住跨浏览器的兼容性)...在30分钟不活动后,它“滞后”约5秒钟时窗口重新聚焦。(滞后我的意思是它只是停止做任何事情,而不是换片,什么都没有)我认为这可能是关于应用程序服务器的超时或类似的事情,但我对此没有足够的洞察力。希望你们能帮助我。 以下是相关的Javascript代码:

 function addAnpStatusLight() {
  if ((window.location.pathname.toLowerCase().indexOf("dlg") < 0) && (window.location.pathname.toLowerCase().indexOf("tab.asp") < 0)) {
  //Element initialisieren
  var lAmpelB = document.createElement("img");
  lAmpelB.id = "AnpStatusLight";
  lAmpelB.title = "Browser Terminal";
  lAmpelB.src = absoluteUrl("~/Style/system/blank.gif");
  lAmpelB.onclick = function () {
    window.open(location.href.split("/").slice(0, 4).join("/") + "/time/BrowserTerminal.aspx?_nonav=1");
  }

  var Ampelcolor;
  var BAuftrag = "";
  var Position = "";
  var PositionN = "";
  var Projekt = "";
  var ProjektN = "";

  AmpelColor = fw.getAmpelC();
  currentAmpel = AmpelColor;  //für neuladen bei umstempeln benötigt
  if (AmpelColor.indexOf(",") != -1) {
    var ArAm = AmpelColor.split(",");
    if (ArAm.length == 6) {
      AmpelColor = ArAm.slice(0, 1);
      BAuftrag = ArAm.slice(1, 2);
      Position = ArAm.slice(2, 3);
      PositionN = ArAm.slice(3, 4);
      Projekt = ArAm.slice(4, 5);
      ProjektN = ArAm.slice(5, 6);
      lAmpelB.title = "Projekt: " + Projekt + ", " + ProjektN + "\nBAuftrag: " + BAuftrag + "\nPosition: " + Position + ", " + PositionN;
    } else if (ArAm.length == 4) {
      AmpelColor = ArAm.slice(0, 1);
      BAuftrag = ArAm.slice(1, 2);
      Position = ArAm.slice(2, 3);
      PositionN = ArAm.slice(3, 4);
      lAmpelB.title = "BAuftrag: " + BAuftrag + "\nPosition: " + Position + ", " + PositionN;
    }
  }
  //Farbe setzen
  switch (AmpelColor){
  case "G":
    fw.addClass(lAmpelB, "Green");
    break;
  case "Y":
    fw.addClass(lAmpelB, "Yellow");
    break;
  case "R":
    fw.addClass(lAmpelB, "Red");
    break;
  }
  //Element anfügen
  if (AmpelColor != "NC" && AmpelColor != null) {
    this.element.appendChild(lAmpelB);
  }
 }
}
  window.attachEvent("onfocus", updateAmpel); //bis IE 10



  //lädt die Seite neu falls umgestempelt wurde, an onfocus angehängt
  function updateAmpel() {
    if (currentAmpel != getCurrentAmpel()) {
      var search = window.location.search;
      if (search != "" && search != null) {
        var queryHash = getQueryStringAsHash(search);
        window.location.href = appendQueryHashToUrl(window.location.pathname, queryHash);
      } else {
        window.location.href  = window.location.href
      }
    }
  }

  //berechnet den Ampelstring neu und gibt ihn zurück
  function getCurrentAmpel() {
    var ret;
    ret = fw.getAmpelC();
    return ret;
  }

希望这是了解我的问题的足够信息。如果还有其他问题,请随意。

0 个答案:

没有答案