minimale / maximale Breite eines Frames festlegen

manuelme1

Grünschnabel
Hallo,

ich habe mir eine Frame-Seite gebastelt,in der der linke Frame nur auf eine bestimmte Größe geändert werden können soll.
Leider habe ich das noch nicht so ganz hinbekommen...

Ich habe eine Function geschrieben, die durch das onResize-Event des Frames ausgelöst wird, also so:

HTML:
<frame src="leftframe.html" name="navi" id="navi" frameborder="0" scrolling="no" onresize="resize_frame()">

Das Script sieht so aus:

HTML:
<script language="JavaScript" type="text/javascript">
<!--
 function resize_frame() {
  if(document.getElementById("navi").width < 180) {
   document.getElementById("navi").width = 180;
  } else if(document.getElementById("navi").width > 300) {
   document.getElementById("navi").width = 300;
  }
 }
// -->
</script>

Sobald ich den Frame vergößere, und er die Grenzen überschreitet, tritt ein JS-Fehler auf: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"
Anscheinend ist die Eigenschaft "width" nur lesbar.
Wenn ich statt "width" "style.width" schreibe, funtioniert es auch nicht.

Kann mir jemand helfen oder eine andere Lösung geben?


Danke!
 
Wenn du die Breite des Frames ändern willst, musst du die cols-Eigenschaft des übergeordneten <frameset>-Elements ändern.

Dokument-Eigenschaften helfen dir bei Frames nicht weiter, da diese keine Dokumente, sondern Fenster sind.
 
Hm...
OK, jetzt kann ich die Breite schon einmal auslesen (über "cols") und prüfen, wie breit der Frame ist, aber wenn ich ihn dann wieder auf 180px Breite setze, kann man ihn trotzdem weiterhin verkleinern.

Hier mal meine neue Function:

HTML:
<script language="JavaScript" type="text/javascript">
<!--
 function resize_frame() {
  var Breite
  Breite = parent.contentframes.cols.split(",");
  if(Breite[0] < 180) {
   parent.contentframes.cols = "180,*";
  } else if(Breite[0] > 300) {
   parent.contentframes.cols = "300,*";
  }
 }
// -->
</script>

Ich habe es auch schon mit "parent.navi.noresize" versucht, aber die gesetzte Eigenschaft kann man ja dann nicht mehr rückgängig machen.

Hier mal noch meine Framedefinition, zum besseren Verständnis:

HTML:
<frameset rows="105,*">
  <frame src="topframe.html" name="head" noresize frameborder="0" scrolling="no">
  <frameset cols="180,*" name="contentframes">
   <frame src="leftframe.html" name="navi" id="navi" frameborder="0" scrolling="no" onresize="resize_frame(); return false;">
   <frame src="home.html" name="content" frameborder="0">
   </frameset>
 </frameset>
 

Neue Beiträge

Zurück