öffne Fenster in der gleichen Registerkarte wie Eltern, mit Variablen von Eltern

Ich habe zur Zeit eine Schaltfläche, die ein neues Fenster in einem neuen Tab öffnet mit window.open ("newpage.html") ... Ich benutze childVar = window.opener.parentGlobalVar im untergeordneten Fenster, um die Werte einiger globaler Variablen aus dem übergeordneten Fenster abzurufen. Nun wurde ich gebeten, das neue Fenster auf der gleichen Registerkarte wie das Elternfenster zu öffnen und eine "Zurück" -Schaltfläche einzufügen, um zum übergeordneten Fenster zurückzukehren.

Bisher haben meine Versuche, dies zu tun, nicht funktioniert. Ich habe versucht, _top oder _self als Argumente für window.open , window.location und location.href ..., die alle benötigten Variablen nicht vom übergeordneten Element abrufen können; Ich gehe davon aus, dass diese Werte gelöscht werden, wenn ich eine neue Seite auf derselben Registerkarte öffne. Gibt es eine Möglichkeit, diese Werte (clientseitig) zu speichern oder an das neue Fenster zu übergeben, wenn es auf der gleichen Registerkarte geöffnet wird?

0
Wie ist das ein nützlicher Kommentar? Zugegeben, ich hätte "neue HTML-Seite" anstelle von "neues Fenster" sagen sollen ... aber das wird in diesem nicht hilfreichen Kommentar nicht erwähnt.
hinzugefügt der Autor JasonBK, Quelle
ist das Warum? b/c Wenn ich den Mauszeiger über den Pfeil neben einem Kommentar halte, wird im Popuptext angezeigt, dass dieser Kommentar dem Beitrag etwas Nützliches hinzufügt. Siehst du etwas anderes?
hinzugefügt der Autor JasonBK, Quelle
neues Fenster in der gleichen Registerkarte? Ähm
hinzugefügt der Autor Harsha Venkatram, Quelle
Ich nehme an, Sie haben wirklich keine Ahnung, warum ein Kommentar aufgewertet wird! Es ist auch upvoted, wenn die Person, die sie upvoting ist, auch den gleichen Gedanken hat. Macht Sinn ?
hinzugefügt der Autor Harsha Venkatram, Quelle

3 Antworten

Das kannst du nicht tun.

Sobald Ihr Fenster (Seite) entladen wurde (wenn der Tab auf die neue Seite navigiert), ist es nicht mehr vorhanden.

Stattdessen können Sie die Daten in der Abfragezeichenfolge übergeben.

0
hinzugefügt
Ich schätze die Gedanken, aber ist "du kannst das nicht tun" wirklich wahr, wenn die localStorage Antwort unten funktioniert? (wie es scheint, für mich, so weit)
hinzugefügt der Autor JasonBK, Quelle
Ja, aber ich habe gefragt: "Gibt es eine Möglichkeit, diese Werte zu speichern (clientseitig) oder an das neue Fenster zu übergeben, wenn es im selben Tab geöffnet wird?" ... aber ich weiß Ihre Antwort zu schätzen, danke.
hinzugefügt der Autor JasonBK, Quelle
Der Fragment-Bezeichner könnte dem Abfrage-String vorzuziehen sein, da er nicht an den Server gesendet wird
hinzugefügt der Autor Dagg Nabbit, Quelle
@JasonBK: Ich meine, Sie können nicht direkt auf den Variablen- und Ausführungskontext zugreifen. Sie können sie woanders speichern, ob im Querystring, im Fragment, im Cookie oder im lokalen Speicher.
hinzugefügt der Autor SLaks, Quelle

Könnte versuchen, die window.close ("newpage.html") -Methode .. Dies würde die "newpage.html" (Zurück-Taste) schließen und zur ursprünglichen Seite zurückkehren (dann würden sie nur auf den Link klicken Sie öffneten die "newpage.html", wenn es notwendig ist, die Seite anzuzeigen oder zur Registerkarte zurückzukehren.
Code wäre ähnlich zu:


Click to close and return to last page.

<button onclick="myFunction()">close</button> <script> function myFunction() { window.close("newpage.html"); } </script>
0
hinzugefügt
Ich sehe nicht, wie dies helfen würde, Daten von der Eltern zu der Kind-HTML-Seite zu übergeben?
hinzugefügt der Autor JasonBK, Quelle

Sie können localStorage verwenden, um Daten clientseitig zu speichern.

localStorage.setItem("bar", foo);
var x = localStorage.getItem("bar");

Works kind of like cookies but there are also risks involved. I'd advice you to research it a little, starting for example here

Sie können grundsätzlich alles darin speichern, zum Beispiel Ihre verweisende URL.

BEARBEITEN @ Kommentar:

um den gesamten Speicher zu löschen, den Sie verwenden können:

localStorage.clear();

und um ein bestimmtes Schlüssel/Wert-Paar zu löschen: localStorage.removeItem (key) in Bezug auf Kompatibilität: caniuse.com ist ziemlich anständig.

0
hinzugefügt
das scheint für mich bisher zu funktionieren (Testen in IE9, Chrome 31, FF 26) ... aber ich werde einige ältere Browser überprüfen müssen, und auch, wie ich nur die von meiner URL und nicht von anderen gespeicherten Elemente lösche. ..Vielen Dank!
hinzugefügt der Autor JasonBK, Quelle
JavaScript - Deutsche Gemeinschaft
JavaScript - Deutsche Gemeinschaft
3 der Teilnehmer

In dieser Gruppe sprechen wir über JavaScript.