Harlequin: Javascript und Frames

Hi,

wegen des Themas werd ich warscheinlich gleich wieder geschlagen, enthält es doch gleich 2 'böse' Dinge...

Also, erst mal vorweg: Es geht um eine Intranetlösung bei der Javascript vorausgesetzt wird und das Frameset hat sich durchaus bewährt.

Allerdings wäre noch ein Effekt wie z.B. bei der Sidebar von Opera ganz wünschenswert, also per Klick einen frame minimieren. Laut SelfHTML ist die Eigenschaft cols des HTMLElements frameset in jedem Browser beschreibbar, nur scheinbar hat mein Firefox 1.5 noch nichts davon gehört...
'setting a property that has only a getter' ist seine Antwort. Das entfernen der noresize-Attribute hat auch nicht geholfen. Kann das jemand Verifizieren dass das im FF tatsächlich nicht (mehr) geht? Sollte man evtl. in SelfHTML dann auch erwähnen.

Und kennt jemand eine Alternative einen Frame zu verkleinern (also nicht über cols-Attribut ändern)?

Gruß,

Harlequin

PS: hier der Code

Initialisierung:

var width = 215;

Und in einem DIV steht:

onclick="width=(width==215)?7:215;parent.document.getElementById('mainframeset').cols=width+',*';"

  1. Hi,

    Und kennt jemand eine Alternative einen Frame zu verkleinern (also nicht über cols-Attribut ändern)?

    setAttribute("cols",value)

    Das funktioniert (s. Window-Maximize-Button) auf allen W3C-DOM-Browsern (vom "schludrigen Opera" mal abgesehen - zumindest was Versionen bis in jüngere Zeit angeht).

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hi,

      setAttribute("cols",value)

      Nachdem das hier auch nicht funktioniert hat hab ich mal etwas Großflächiger rumprobiert... es lag an der Variable width, ich hab sie jetzt umbenannt.

      Gruß,

      Harlequin

      1. Hi,

        Nachdem das hier auch nicht funktioniert hat hab ich mal etwas Großflächiger rumprobiert... es lag an der Variable width, ich hab sie jetzt umbenannt.

        Ja, OK. Variablen wie existierende Eigenschaften zu benennen, ist generell keine gute Idee. Führt leichter zu Verwechslungen und gibt mitunter Probleme (qed ;-)).

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    Allerdings wäre noch ein Effekt wie z.B. bei der Sidebar von Opera ganz wünschenswert, also per Klick einen frame minimieren.

    Also ich muss selber sowas einsetzen, FF hat damit:
        top.document.getElementById(ID-des-frames).cols= "154,*";
    keine Probleme. Opera hingegen verliert nach dem Resize allerdings zuweilen die Orientierung in der Framehirarchie.

    Von daher würde ich diese Technik _nicht_ empfehlen, und nur "zur Not" einsetzen.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Hi,

      Allerdings wäre noch ein Effekt wie z.B. bei der Sidebar von Opera ganz wünschenswert, also per Klick einen frame minimieren.

      Also ich muss selber sowas einsetzen, FF hat damit:
          top.document.getElementById(ID-des-frames).cols= "154,*";
      keine Probleme.

      Hm... hab den fehler auch grad gefunden. das Problem ist die Variable width, scheinbar setzt da FF ein implizites this oder so davor. Hab sie jetzt auf breite umbenannt und es geht. (Leider hat mir die JS-Konsole auch nichts genaueres gesagt).

      Opera hingegen verliert nach dem Resize allerdings zuweilen die Orientierung in der Framehirarchie.

      Im Opera hate ich bisher keine Probleme gesehen, werd das aber mal Beobachten.

      Von daher würde ich diese Technik _nicht_ empfehlen, und nur "zur Not" einsetzen.

      Es wäre halt 'nice to have'. Die andere Alternative, das Frameset rauszuwerfen, kommt nicht in Frage. Das ist zuviel Aufwand, außerdem muss dann jedesmal unser dynamisch generiertes Menü aufgebaut und mitgeschickt werden...

      Gruß,

      Harlequin

    2. Hi,

      keine Probleme. Opera hingegen verliert nach dem Resize allerdings zuweilen die Orientierung in der Framehirarchie.
      Von daher würde ich diese Technik _nicht_ empfehlen, und nur "zur Not" einsetzen.

      Ich sperre bei solchen Spielereien Opera einfach aus.

      Die Seiten sollten generell ohnehin auch ohne JS funktionieren (also können auch Opera-User etwas damit anfangen) und Opera hat einfach so viele JS-Fehler und -Unzulänglichkeiten, daß es sich, zumal bei der geringen Verbreitung, IMHO nicht lohnt, sich für die paar Surfer Mühe zu machen ...

      ... soll doch Opera erstmal 'nen gescheiten Browser programmieren ... >:->

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Hi,

        ... soll doch Opera erstmal 'nen gescheiten Browser programmieren ... >:->

        In Bezug auf welche Version? Ich hatte bisher mit Version >=7.5 keine Probleme. Da sind FF und vor allem IE wesentlich schlimmer.

        Gruß,

        Harlequin

        PS: Klar ist Opera nicht sehr weit verbreitet, aber ich benutze ihn selber, von daher schau ich da schon drauf, dass es damit geht.

        1. Hi,

          ... soll doch Opera erstmal 'nen gescheiten Browser programmieren ... >:->
          In Bezug auf welche Version?

          Alle.

          Ich hatte bisher mit Version >=7.5 keine Probleme.

          Darunter ist es (aus Entwicklersicht) ohnehin unzumutbar.

          Da sind FF und vor allem IE wesentlich schlimmer.

          Das empfinde ich zumindest nicht so. Klar, gerade der IE hat seine "Eigenheiten", aber er kann faktisch alles korrekt, wenn man diese Eigenheiten (teilweise andere Syntax, Probleme mit setAttribute() bei direkt verfügbaren Eigenschaften) kennt. Es lassen sich trotzdem leicht browserübergreifende Skripte programmieren - und eventueller Mehraufwand ist ja nicht nur durch die hohe Verbreitung gerechtfertigt, oft war MS ja auch innovativ tätig, und die anderen haben die gleiche Funktionalität nur (mit ggf. etwas anderer Syntax) übernommen.

          Bei Opera hingegen snd manche Dinge schlicht fehlerhaft implementiert, andere Dinge hingegen nur teilweise (*das* ist das *Schlimmste* überhaupt) und wieder andere gar nicht, obwohl dafür kein Grund vorliegt. Und das fällt mir seit Generationen von Operas auf. IMHO sollten die erstmal die Basics voll und korrekt implementieren, bevor sie sich mit hippen Features verzetteln ...

          PS: Klar ist Opera nicht sehr weit verbreitet, aber ich benutze ihn selber, von daher schau ich da schon drauf, dass es damit geht.

          Klar - ab im Zweifel kriegen Operanutzer eben eine Seite ohne (oder mit reduziertem) JS. Sie werden es verkraften - wenn sie es nicht täten, hätten sie auch kein Opera ... :)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Hallo.

            IMHO sollten die erstmal die Basics voll und korrekt implementieren, bevor sie sich mit hippen Features verzetteln ...

            Gut, dass die dein "H" zu schätzen wissen.
            MfG, at