ronny: Anker nicht anspringbar im Popupwindow (NS)

hallo,

ich erstelle ein popup-window mit folgendem befehl:
function popup () {
  win1 = window.open("popup1.html", "popup1",
"width=700,height=500,scrolling=no,resizable=no");
}
auf diese seite ist 1000 pixel groß und enthält zwei anker. mit einem link kann ich zwischen diesen beiden punkten hin und her springen. unter iexplorer klapp das sehr gut, allerdings kann man mit netscape nicht mehr die anker anspringen. dies funktioniert nur, wenn man die scrollbars anschaltet (scrollbars=yes), was allerdings nicht erwünscht ist. kennt jemand einen trick?

mfg,
ronny

  1. hallo ronny,

    Ich hab mal schnell eine Lösung gebastelt.
    Das Script funktioniert nur mit dem NN. Aber es wird ja auch nur für den NN gebraucht.

    Statt den Ankern definiert man einfach ilayers.Bsp:
    <ilayer name="text">text</ilayer>
    Der ganze Seiteninhalt wird in einen Layer mit dem namen doc gesteckt.
    Mit GoTo() kann man nun zu den entsprechenden ilayer-tag springen.
    GoTu() muß der Name des ilayers als String übergeben werden.

    <html>
    <head>
    <title>popup</title>
    <script language="JavaScript">
    <!--
    function GoTo(ilay)
    {
        if(document.doc.document.layers[ilay].pageY - document.doc.top > document.doc.clip.height - window.innerHeight) //Wenn der ilayer so weit unten ist, das über das ende des dokuments hinaus gescrollt werden muß
        {
            document.doc.top = -1 * (document.doc.clip.height - window.innerHeight) //scrolle bis zum ende des Dokuments
        }
        else
        {
            document.doc.top = -1 * (document.doc.document.layers[ilay].pageY - document.doc.top) //Sonst scrolle bis zum entsprechenden ilayer.
        }
    }
    //-->
    </script>
    </head>
    <body>
    <layer top=0 left=0 name="doc">
    <ilayer name="topl"><a href="javascript:GoTo('bottoml')">unten</a><a href="javascript:GoTo('mittel')">mitte</a></ilayer><br>
    text<br>
    [...]
    text<br>
    <ilayer name="mittel"><a href="javascript:GoTo('topl')">oben</a></ilayer><br>
    text<br>
    [...]
    text<br>
    <ilayer name="bottoml"><a href="javascript:GoTo('topl')">oben</a></ilayer>
    </layer>
    </body>
    </html>

    Tschüs

    Daniel

    1. hallo daniel,

      Ich hab mal schnell eine Lösung gebastelt.

      erst einmal vielen dank.

      Das Script funktioniert nur mit dem NN. Aber es wird ja auch nur für den NN gebraucht.

      ähm, nicht ganz. es sollte schon für beie browser funktionieren. der aufwand für zwei versionen ist auch nicht gerechtfertigt. die frage war mehr, ob es z.b. noch ein attribut oder trick für window.open o.s. gibt.

      trotzdem noch einmal vielen dank für deine hilfe,
      ronny

      1. hallo ronny,

        Das Script funktioniert nur mit dem NN. Aber es wird ja auch nur für den NN gebraucht.
        ähm, nicht ganz. es sollte schon für beie browser funktionieren. der aufwand für zwei versionen ist auch nicht gerechtfertigt. die frage war mehr, ob es z.b. noch ein attribut oder trick für window.open o.s. gibt.

        Nun mit einer kleinen erweiterung tut das script auch mit dem IE.
        Hier die bessere Version:

        <html>
        <head>
        <title>popup</title>
        <script language="JavaScript">
        <!--
        function GoTo(ilay)
        {
            if(document.doc.document.layers[ilay].pageY - document.doc.top > document.doc.clip.height - window.innerHeight) //Wenn der ilayer soweit unten ist, das über das ende des dokuments hinaus gescrollt werden muß
            {
                document.doc.top = -1 * (document.doc.clip.height - window.innerHeight) //scrolle bis zum ende des Dokuments
            }
            else
            {
                document.doc.top = -1 * (document.doc.document.layers[ilay].pageY - document.doc.top) //Sonst scrolle bis zum entsprechenden ilayer.
            }
        }

        function Anker(name) //Gibt einen Anker-Starttag (Bei IE a bei NN ilayer)m zurück
        {
            var text = "";
            if(document.all)
            {
               text += "<a name="" + name + "">";
            }
            if(document.layers)
            {
                text += "<ilayer name="" + name + "">";
            }
            return text;
        }

        function AnkerEnde() //Gibt einen Anker-Endtag zurück
        {
            var text = "";
            if(document.all)
            {
                text += "</a>";
            }
            if(document.layers)
            {
                text += "</ilayer>";
            }
            return text;
        }

        function Link(name) //Gibt einen Link-Starttag (bei IE normale HTML-Syntax bei NN Javascriptaufruf) zurück
        {
            var text = "";
            if(document.all)
            {
                text += "<a href="#" + name + "">";
            }
            if(document.layers)
            {
                text += "<a href="javascript:GoTo('" + name + "')">";
            }
            return text;
        }

        function LinkEnde() //Gibt einen Link-Schlußtag zurück
        {
            return "</a>";
        }
        //-->
        </script>
        </head>
        <body>
        <layer top=0 left=0 name="doc">
        <script>
        <!--
        document.open();
        document.write(Anker("topl") + Link("bottoml") + "unten" + LinkEnde() + "" + Link("mittel") + "mitte" + LinkEnde() + AnkerEnde());
        document.close();
        //-->
        </script><br>
        text<br>
        [...]
        text<br>
        <script>
        <!--
        document.open();
        document.write(Anker("mittel") + Link("topl") + "oben" + LinkEnde() + AnkerEnde());
        document.close();
        //-->
        </script><br>
        text<br>
        [...]
        text<br>
        <script>
        <!--
        document.open();
        document.write(Anker("bottoml") + Link("topl") + "oben" + LinkEnde() + AnkerEnde());
        document.close();
        //-->
        </script><br>
        </layer>
        </body>
        </html>

        Das Script kombiniert einfach beide Technicken zusammen.

        Tschüs

        Daniel

        1. hallo Daniel,

          vielen dank, ich denke, daß hilft mir weiter.

          thanx ronny