第一次在这里发帖。我一直在这个网站上找到很好的答案,但这是我第一次在对我的非常具体的问题进行广泛研究后情不自禁。我在窗口/选项卡的“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;
}
希望这是足够的信息来理解我的问题。如果还有其他问题,请随时提出。