Ich habe eine JavaScript-Datei mit dem Namen 'navigate.js' an eine Webseite angehängt. Sie enthält eine Sammlung von Methoden, die wie folgt aussehen:
var ContractWindow;
function showContract(ContractID){
try{
if(ContractWindow){
if(!ContractWindow.closed){
ContractWindow.close;
}
}
ContractWindow = window.open(contract.aspx?contractid=" + ContractID, "ContractEditor",
"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=780,height=615");
}
}catch(exc){
alert(exc.message);
}
}
(es gibt ähnliche Funktionen zum Öffnen von Seiten zur Bearbeitung von Produktkategorien, Produkten, Regionen...usw.)
Jede der verschiedenen Funktionen öffnet eine andere Editor-Seite in einem eigenen Fenster mit dem Ziel, dass zu jedem Zeitpunkt nur ein Fenster eines bestimmten Typs (mit type="ContractEditor") geöffnet ist.
Wenn ein Editor (in diesem Fall der Vertragseditor) wiederverwendet wird, wollen wir das vorherige Fenster zuerst schließen, damit nachfolgende window.open
bewirkt, dass das neue Fenster vor allen anderen Fenstern erscheint (den Fokus hat).
Alles funktioniert wie erwartet bis die Seite etwa 10 Minuten lang inaktiv war. Danach wird die Warnmeldung angezeigt: Das aufgerufene Objekt hat die Verbindung zu seinen Clients getrennt
Verschiedene Tests haben ergeben, dass die Ausnahme durch die Zuweisung des Rückgabewerts von window.open an die Variable ContractWindow verursacht wird. Wenn ich weglasse ContractWindow =
und rufen Sie einfach window.open
Es funktioniert, aber das Fenster springt nicht in den Vordergrund, was eine Voraussetzung ist. (window.open verwendet das vorhandene Fenster mit dem Namen "ContractEditor" wieder, bringt es aber nicht aus dem Stapel der geöffneten Fenster nach vorne).