DrBonsai
Mitglied
Hallo zusammen,
ich möchte gerne, dass meine Seite nachdem ein Formular gesendet wurde (reines php, kein AJAX o.ä) wieder auf die zuvor engestellte Scrollposition springt.
Momentan habe ich das folgendermaßen gelöst:
Die aktuelle Scrollposition (Y-Achse) wird also in das Feld scroll_position geschrieben und per php mitgesendet.
Wenn die Seite geladen wird, scrollt sie sofort wieder an die Position
Jetzt habe ich zwei Probleme:
1) Wie immer geht es nicht im Internet Explorer (Version 10.0)
Wie kann ich das Ganze so umbauen, dass es im IE auch klappt?
2) Einige Formulare (Warenkorb bspw.) gebe ich in Popups aus (DIV-Layer, absolut positioniert, die bei Bedarf eingeblendet werden). Diese haben eine maximale Höhe, so dass auch hier u.U. scrollbars entstehen, wenn der Inhalt zu lang wird.
Ich habe keine Ahnung, wie ich dann erreichen kann, dass das entsprechende <div id="popup"> an die vorgegebene Position scrollt, bzw. wie ich die entsprechende Position in ein Textfeld kriege und hinterher per JS den Layer an diese Position scrollen kann.
Wahrscheinlich müsste ich das Ganze irgendwie aus dem <body>-tag rausholen, da dieser ja nicht gescrollt wird, wenn ich mich im Popup befinde, richtig? Nur wie, habe ich keine Ahnung. Die angewandte Lösung habe ich mir zusammengefuchst, ohne echtes js-Verständnis, leider.
Kann mir hier jemand weiterhelfen diesbezüglich?
Besten Dank,
David
ich möchte gerne, dass meine Seite nachdem ein Formular gesendet wurde (reines php, kein AJAX o.ä) wieder auf die zuvor engestellte Scrollposition springt.
Momentan habe ich das folgendermaßen gelöst:
HTML:
<body onscroll="scroll_position.value = window.pageYOffset;">
[...]
<form name="checkout_information_form" method="post" >
<input type="hidden" readonly="readonly" id="scroll_position" name="scroll_position" />
<input type="submit" name="checkout_check_order" value="Bestellung prüfen" />
</form>
[...]
<?php
if(isset($scroll_position))
{
echo "
<script type='text/javascript'>
window.scrollTo(0,".$scroll_position.")
</script> ";
}
?>
Die aktuelle Scrollposition (Y-Achse) wird also in das Feld scroll_position geschrieben und per php mitgesendet.
Wenn die Seite geladen wird, scrollt sie sofort wieder an die Position
PHP:
/*Scrollposition*/
if(isset($_POST['scroll_position']))
{
$scroll_position = $_POST['scroll_position'];
#var_dump($scroll_position);
}
Jetzt habe ich zwei Probleme:
1) Wie immer geht es nicht im Internet Explorer (Version 10.0)
Wie kann ich das Ganze so umbauen, dass es im IE auch klappt?
2) Einige Formulare (Warenkorb bspw.) gebe ich in Popups aus (DIV-Layer, absolut positioniert, die bei Bedarf eingeblendet werden). Diese haben eine maximale Höhe, so dass auch hier u.U. scrollbars entstehen, wenn der Inhalt zu lang wird.
Ich habe keine Ahnung, wie ich dann erreichen kann, dass das entsprechende <div id="popup"> an die vorgegebene Position scrollt, bzw. wie ich die entsprechende Position in ein Textfeld kriege und hinterher per JS den Layer an diese Position scrollen kann.
Wahrscheinlich müsste ich das Ganze irgendwie aus dem <body>-tag rausholen, da dieser ja nicht gescrollt wird, wenn ich mich im Popup befinde, richtig? Nur wie, habe ich keine Ahnung. Die angewandte Lösung habe ich mir zusammengefuchst, ohne echtes js-Verständnis, leider.
Kann mir hier jemand weiterhelfen diesbezüglich?
Besten Dank,
David
Zuletzt bearbeitet: