Scrollbalken im Fenster nachträglich an- / ausschalten
Patrick Schröder
- javascript
Hallöchen an alle,
folgende Fragestellung zu der ich bisher leider nirgends eine Antwort gefunden habe.
Ich öffne ein JS-Fenster mit einer Fensterfunktion, wo die Scrollbalken abgeschaltet sind. Die Inhalte sind alle so plaziert, als dass die Scrollbalken Platz rauben würden, aber keinen Vorteil brächten. Sollte jemand JS abgeschaltet haben, öffnet sich die Seite in einem _normalen_ neuen Fenster. Nun soll es die Möglichkeit geben die Seite anders angezeigt zu bekommen, um die Seite mit Ihren Inhalten auch drucken zu können. Soviel zum Hintergrund.
Wenn ich ein Fenster öffne, welches keine Scrollbalken besitzt (scrollbars=no), habe ich dann die Möglichkeit über den Aufruf einer Funktion die Scrollbalken wieder an- bzw. bei einer Rückkehr zur anderen Seite wieder abzuschalten? Wenn ja, wie geht es? Kann mir jemand kurz eine Funktion schreiben oder mir einen passenden Link nennen? Bin für jeden Tipp dankbar.
Gruß Patrick
Hallo Patrick,
die folgende Lösung ist getestet mit dem aktuellen Firefox und IE, die Seite braucht (oder darf?) nicht mit "scrollbars=no" aufgerufen werden.
<html>
<head>
<title>Testseite</title>
<script type="text/javascript">
<!--
function switchScrollbars() {
if( document.getElementById )
{
body = document.getElementById("page");
body.style.overflow = body.style.overflow == "hidden" ? "auto" : "hidden";
}
}
//-->
</script>
</head>
<body id="page" style="overflow:hidden;">
<a href="javascript:switchScrollbars();">Scrollbalken an / aus</a>
<button onclick="switchScrollbars();">Scrollbalken an / aus</button>
<!-- br's um scrollbalken zu bekommen -->
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
</body>
</html>
Viele Grüße,
Michael
Hallo Michael,
vielen Dank soweit erstmal! Auf der ersten Seite darf nicht gescrollt werden, außer in einem Randbereich, der über div-Tags definiert ist und per css (overflow: auto;) scrollbar ist. Das Fenster selbstr darf nicht gescrollt werden, ist aber auch nicht notwendig.
Im selben Fenster kann die Seite als Druckseite aufgerufen werden, die im Prinzip die selben Daten zeigt, nur dass diese anders aufgelistet sind und die meisten Farben halt fehlen. Hier muss gescrollt werden können.
Aufgrund deines Scriptes, dass ich auch grad getestet habe, weiß ich, dass es auch bei mir einwandfrei funktioniert. Und es wird ja auch nur aufgerufen, wenn vorher schon feststand, dass der Benutzer JS überhhaupt benutzt (durch die Art des-Fenster-öffnens).
Da über den submit-Aufruf bei mir die neue Seite geladen wird, habe ich deine Funktion nun im body als onload angegeben, um sie halt erst in der genannten Seite aufzurufen und nicht schon vorher. Leider funktioniert diese Variante bei mir noch nicht. Wenn du eine Idee hast, woran es liegen könnte, bin ich natürlich dankbar, aber ich probiere erstmal selbst den Fehler zu finden.
Gruß´Patrick
Sooo... ich habe noch einmal ein wenig getestet.
Folgendes Ergebnis:
In einer normalen HTML-Seite funktioniert es. Öffnet man diese Seite in einem Fenster, egal ob mit oder ohne Scrollbalken (scrollbars=yes || =no), die Funktion hat keinen Einfluss auf das Fenster, sondern anscheinend nur die Grundeinstellungen.
Woran das nun liegt, kann ich selbst nicht sagen, da ich wie gesagt zu wenig Plan von JS habe.
Wenn noch jemand Ideen hat... ich bin für alles offen. Wenn es keine andere Möglichkeit gibt, muss ich wohl oder übel die Übersichtlichkeit wieder umschmeißen und noch ein neues (Druck-)Fenster öffnen.
Gruß Patrick