Sebastian Mohr: ?? hintergrundbild bei frames veraendern ??

warum geht das beim internet exploerer aber nicht beim netscape?:

gegeben ist ein frameset

<FRAMESET border="0" frameBorder="NO" frameSpacing="0" rows="1*,428,1*">
    <FRAME frameBorder="NO" marginHeight="0" marginWidth="0" name="topFrame" scrolling="no" src="border/topframe.htm">
    <FRAMESET border="0" cols="1*,655,1*" frameBorder="NO" frameSpacing="0">
      <FRAME frameBorder="NO" marginHeight="0" marginWidth="0" name="leftFrame" scrolling="no" src="border/leftframe.htm">
      <FRAME frameBorder="NO" marginHeight="0" marginWidth="0" name="main" scrolling="no" src="content/start.htm">
      <FRAME frameBorder="NO" marginHeight="0" marginWidth="0" name="rightFrame" scrolling="no" src="border/rightframe.htm">
    </FRAMESET>
    <FRAME frameBorder="NO" marginHeight="0" marginWidth="0" name="bottomFrame" scrolling="no" src="border/bottomframe.htm">
  </FRAMESET>

----------------------------
    |         topFrame         |
    ----------------------------
    | leftF  |  main  | rightF |
    ----------------------------
    |        bottomFrame       |
    ----------------------------

in dessen "main"-frame die funktion

function changeBorderBackground(url){
      top.topFrame.changeBackground(url);
      top.bottomFrame.changeBackground(url);
      top.parent.leftFrame.changeBackground(url);
      top.parent.rightFrame.changeBackground(url);}

per "onload" aufgerufen wird. fuer changeBackground-code su.
in allen frames sind die javascript-funktionen ordnungsgemaess
eingebunden.

----------------------------------

function changeBackground (url) {
  if (document.layers) {
    if (!backgroundLayer) {
      backgroundLayer = new Layer(1);
    }
    background = url;
    var l = backgroundLayer;
    if (!url) {
      var html = '<HTML>' + '<BODY BGCOLOR="' + document.bgColor + '"' + ' BACKGROUND="' + blankImage.src + '"></BODY></HTML>';
    }
    else
      var html = '<HTML><BODY BACKGROUND="' + url + '"></BODY></HTML>';
      l.zIndex = 0;
      l.clip.width = window.innerWidth + 10;
      l.clip.height = window.innerHeight + 10;
      l.document.open();
      l.document.write(html);
      l.document.close();
      l.visibility = 'show';
  }
  else if (document.body)
    document.body.background = url;
}

  1. Hallo,

    warum geht das beim internet exploerer aber nicht beim netscape?:

    Welcher Netscape? Versuche es so in moderneren Browsern:

    parent.frames["framename"].document.getElementsByTagName("body")[0].style.backgroundImage="url(hintergrundb.ild)";

    MfG, Thomas

    1. Welcher Netscape? Versuche es so in moderneren Browsern:

      netscape 4x. halt fuer document.layers. es sollte ja bei
      moeglichst vielen gehen.

      parent.frames["framename"].document.getElementsByTagName("body")[0].style.backgroundImage="url(hintergrundb.ild)";

      das ist wohl die ns6+ oder ie5+ (opera|mozilla) variante.

      1. Hallo,

        Welcher Netscape? Versuche es so in moderneren Browsern:
        netscape 4x. halt fuer document.layers. es sollte ja bei
        moeglichst vielen gehen.

        Hast Du schon document.background="b.ild"; probiert?

        MfG, Thomas

        1. Hast Du schon document.background="b.ild"; probiert?

          meinst du etwa in etwa so?

          function changeBackground (url) {
              if (document.layers) {
                document.background = url
              }
              else if (document.body)
                document.body.background = url;
            }

          das geht leider nicht. problem bei ns4x ist das man per
          javascript nicht den body background veraendern kann.
          das geht nur bei layern. deshalb macht man in der
          hintergrundbildzuveraendernden datei folgendes: man
          fuegt in der obersten ebene (gleich nach <body>) einen
          div-tag hinzu und veraendert dessen "background".

          zumindestens denke ich das die ganze zeit.
          du weisst ja: "wer zuerst kommt, mahlt zuerst ... in den kopf".

          was ich halt nicht verstehe ist, warum meine eingangs vorgestellte
          "changeBackground"-funktion bei frames nicht mehr funktioniert,
          obwohl sie es ohne frames tat. wahrscheinlich liegt das problem in
          dieser funktion:

          function changeBorderBackground(url){
                alert(parent.topFrame);
                top.topFrame.changeBackground(url);
                top.bottomFrame.changeBackground(url);
                top.parent.leftFrame.changeBackground(url);
                top.parent.rightFrame.changeBackground(url);}

          ie5 macht es super: er durchlaeuft diese funktion und ruft die
          in den jeweiligen frames die eingebundene funktion
          "changeBackground(url);" auf. doch schafft es nicht der ns4.
          und wie gesagt, ohne frames funktiert sie ja!

          alle diese frames bekommen diese funktion aus derselben datei:

          topFrame
                               ^
             leftFrame  <- global.js -> rightFrame
                               v
                           bottomFrame   .

          also ich habe da ein verstaendnis- bzw nachvollziehproblem.
          also,

          mahl/mahlt mir in den kopf :)