1

第一次在这里发帖。我一直在这个网站上找到很好的答案,但这是我第一次在对我的非常具体的问题进行广泛研究后情不自禁。我在窗口/选项卡的“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;
  }

希望这是足够的信息来理解我的问题。如果还有其他问题,请随时提出。

4

0 回答 0