| 

.NET C# Java Javascript Exception

2
Moin,

ich bin nicht so der ASP.NET und HTML-Guru, hab hier jetzt aber eine kleine Aufgabe, vielleicht kann mir mal jemand einen Anhaltspunkt geben.

Aufbau der Seite:
Es gibt eine Masterpage, diese hat ein Menü, das dann andere aspx Seiten in einem entsprechenden Bereich anzeigt.

Ich soll jetzt eine weitere ASPX-Seite hinzufügen, die aber nur dazu dient, eine externe Internetseite anzuzeigen. Aktuell mache ich das einfach in einem iframe, das sich wiederum in einem UpdatePanel befindet.

Mein Problem ist jetzt, dass der Zustand der Seite gespeichert werden soll, wenn man im Menü zu einer anderen Seite und wieder zurück wechselt. Auf der Seite im iframe sind z.B. 5 Textboxen, dort füllt man die ersten 4 aus, muss dann aber im Menü zu einer anderen Seite wechseln um etwas nachzusehen und dann wieder zurück zu der Seite mit dem iframe. Dann sollen natürlich nicht die ersten 4 Textboxen wieder leer sein.
Auf die externe Seite habe ich keinen Einfluss.

Wie kann ich es denn jetzt erreichen, dass das iframe nicht neu geladen wird, sondern es genau in dem Zustand bleibt, mit dem ich die Seite verlasse?
22.05.2012
Feroc 1,2k 2 9
4 Antworten
3
Das was mblaess geschrieben hat, wird so nicht gehen. Du kannst aber den Ansatz den er beschrieben hat in zusammenhang mit einem eigenen IFrame-Proxy verwenden.

Mit einem IFrame-Proxy ist gemeint, das du eine ASPX-/ASHX-Seite baust, die per WebRequest die URL abruft und im Anschluss ausgibt. Dadurch umgehst du die Cross-Side-Scripting sperren der Browser weil die Inhalte ja nun von der selben Domain geleifert werden.

<iframe src="proxy.ashx?url=http://www.domain.tld/" id="frameDemo" />

Nun solltest du mittels JavaScript auf alle enthaltenen Elemente zugreifen können.

z.B. mit jQuery:

<script>
var inputs = $("#frameDemo").contents().find("INPUT");
alert(inputs.length);
</script>

Wichtig ist das du den Proxy um weiter Logik erweiterst, so das er alle Links ebenfalls wieder auf den Proxy umbiegst.
22.05.2012
Floyd 14,6k 3 9
+1
Das Problem ist halt die Cross-Domain-Security von Javascript.
Auf Stack-Overflow gibt es eine interessante Diskussion mit mehreren Lösungsansätzen:

http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy
mblaess 22.05.2012
1
Ich nehme das mal als Antwort, allerdings zusammengefasst als: "So einfach geht das nicht". :)
Feroc 23.05.2012
Warum probierst Du es nicht mit einem Popup-Window (window.open)?
Da können die Benutzer die notwendigen Informationen einsehen und dann in die externe Seite eingeben.

Das dürfte der einfachste Weg sein, Dein Problem zu lösen.
mblaess 23.05.2012
Finde ich heutzutage nicht mehr Zeitgemäß, zumal viele moderen Browser dies nicht ohne Weiteres zulassen
Jaksa 23.05.2012
@Jaksa: Dann halt ein Layered DIV, wenn Popupblocker ein Problem sein sollten. Ist immer noch besser als gar keine Lösung oder eine die für Feroc zu kompliziert ist.
mblaess 24.05.2012
Ja, aber ein layered DIV löst das Ursprungsproblem nicht.
Jaksa 24.05.2012
1
Wird so nicht funktionieren. Du müsstest Deine Seite so anpassen, dass Du Deine Elemente per AJAX austauschst und den IFrame so lässt.
Beachte dabei: das Einbinden fremder Inhalte kann Wettbewerbs- und/oder Urheberrechtliche Konsequenzen haben. Entsprechende Urteile gibt es bereits (Landgericht München)
22.05.2012
Jaksa 4,0k 1 8
Das ist schlecht. Die MasterPage kann ich nicht anpassen, also auch nicht, was diese aufruft. Alles was ich habe ist der ContentPlaceHolder als äußeren Rahmen.
Feroc 22.05.2012
1
Du könntest probieren per Javascript die Werte der Textboxen auszulesen und beim erneuten Laden der externen Seite im IFrame wieder zu setzen.

Ich bin mir nicht 100% sicher ob das klappt, wenn die externe Seite auf einer anderen Domain ist, aber es wäre einen Versuch wert.

Hier findest Du ein Beispiel:
http://roneiv.wordpress.com/2008/01/18/get-the-content-of-an-iframe-in-javascript-crossbrowser-solution-for-both-ie-and-firefox/

LG, Micha
22.05.2012
mblaess 1,2k 1 9
0
Ich gehe davon aus, dass das was Du vor hast rechtlich korrekt ist.
Was ist genau der Zweck? Möchtest Du von Deiner Seite ein Formular in einer fremden Seite ausfüllen? Könntest Du das Formular nicht einfach nachbauen und per POST auf die richtige Seite senden?
22.05.2012
Jaksa 4,0k 1 8
Ja, ist alles im rechtlichen Rahmen. Die eingebettete Seite gehört einer Firma, mit der wir zusammen arbeiten. Auf der Seite wird dann wirklich ein Formular ausgefüllt. Allerdings wird nachbauen nicht möglich sein, da es sich ändern könnte.
Feroc 23.05.2012
Kniffelig. Das was Floyd geschrieben hat, müsste funktionieren, ist aber schon ein bisschen aufwendiger.
Wenn ich das nächste mal im Denkteich verschwinde, werde ich darüber sinnieren.
Jaksa 23.05.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH