ここに初投稿。私はいつもこのサイトで良い答えを見つけてきましたが、非常に具体的な問題について広範な調査を行った後、自分自身を助けることができなかったのはこれが初めてです. ERP独自のナビゲーションバーに実装する必要があったステータスライトに表示される色やその他の特定の変数を計算するウィンドウ/タブの「onfocus」に関数を添付しました。したがって、すべてのフォーカスで情報が変更されたかどうかを尋ね、変更された場合はページをリロードします。すべて正常に動作しますが、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;
}
これが私の問題を理解するのに十分な情報であることを願っています。さらに質問がある場合は、お気軽にお問い合わせください。