Erkennen ob Seite bereits in einem Tab geöffnet ist

  • Ich kann mit einem Link

    Code
    href="anfrage.html" target="Anfrage"

    dafür sorgen dass bei mehrmaligem Klicken des Links der Tab "Anfrage" nicht mehrmals geöffnet wird, allerdings werden dabei bereits eingegebene Formulardaten wieder gelöscht. Gibt es eine Möglichkeit, dass eingegebene Formulardaten erhalten bleiben? Oder kann ich per JS abfragen ob der Tab "Anfrage" schon geöffnet ist und ihn in den Vordergrund holen anstatt ihn nochmals aufzurufen?

  • ????

    Bitte etwas genauer und ggf mit Code

    Ich verstehe das so, wenn man auf dein target Link klickt wird ein neuer Tab/Fenster geöffnet.

    Du möchtest das mit JS abfragen ob das schon auf ist , richtig ?

    Mit target geht das wahrscheinlich nicht.

    Wenn du aber mit window open ein Fenster öffnest hast du mehr möglichkeiten da was abzufragen( ob offen ist , usw...);

  • Ich skizziere das mal kurz:

    • mit onclick JS Funktion aufrufen
    • Variable "Zustand" abfragen ob offen
    • -> wenn ja, Tab in Vordergrund bringen
    • -> wenn nein, Tab öffnen, Variable "Zustand" setzen

    Da muss ich mal schauen wie ich die einzelnen Schritte lösen kann!

  • Ich öffne einen neuen Tab und speichere seinen Handle in den Session Storage

    Code
    var myTab = window.open("anfrage.html", "basket");
    sessionStorage.setItem("basket", myTab);

    Später hole ich den Handle wieder heraus und möchte den Tab in den Vordergrund bringen

    Code
    var myTab = sessionStorage.getItem("basket");
    myTab.focus();

    Dabei bekomme ich die Fehlermeldung dass focus() keine Funktion ist!

    Sollte focus() in diesem Fall nicht eine Methode laut https://www.w3schools.com/jsref/met_win_focus.asp sein?

  • Im Sessionstorage kannst Du nur Strings speichern, keine Objekte etc. Wenn Du deine Variable myTab speicherst wird Javascript implizit eine Konvertierung in einen String vornehmen. Liest Du diesen dann wieder aus, bekommst Du nicht das ursprüngliche Objekt mit seinen Methoden etc., daher gibt es darin auch keine Methode focus().

  • Ich habe es jetzt so gelöst:

    • im Anfrageformular die Variablen wegsichern wenn es den Focus verliert
    • beim neuerlichen Aufruf mit dem gleichen Tabnamen werden die Variablen zwar gelöscht
    • aber ich stelle sie aus dem sessionStorage wieder her wenn das Anfrageformular den Focus bekommt
    • wird das Anfrageformular geschlossen, lösche ich den sessionStorage

    Damit scheint es zu funktionieren!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!