Boris: Anker in Framesets

Hallo,

ich habe ein Frameset mit 2 Frames. Wenn ich nun innerhalb eines Frames einen Anker setze funktioniert er.

Wie kann ich nun aber erreichen, dass bei Aufruf des Framesets, der Frame gleich zum Anker gescrollt wird?

Ich habe es schon mit PHP versucht und das Frameset so aus einer anderen HTML-Datei aufgerufen:

<a href="frameset.htm?anker=ankername></a>

In frameset.htm sieht das dann so aus:

...
<?php
$anker=frame1.htm;
if($HTTP_GET_VARS['anker'])
{
$anker=$anker."#".$HTTP_GET_VARS['anker']);
}
echo '<frameset rows="*,39" border=0 width=0 frameborder=no framespacing=0>';
echo '<frame src="'.§anker.'" name="frame1">';
?>
<frame src="frame2.htm" name="frame2" marginwidth=0 marginheight=0>
...

Dabei wird das Frameset aufgerufen, der Anker jedoch ignoriert.

Da ein Link innerhalb des Frames funktioniert, denke ich nun darüber nach im Frameset für den ersten Frame mit src="frame1.htm?anker=ankername das ganze weiterzuleiten, oder im Frame1 selbst einen automatischen Link mit header() oder so auszuführen.

Geht das? Ich zweifle, da ich vermute, dass im frameset zunächst Frame1 und dann Frame2 geldaden wird, und somit Anker ignoriert werden. Vielleicht würde es mit einem per Javascript verzögerten automatischen Weiterleitung innerhalb des Frames1 gehen?

Gibt es keine einfachere Möglichkeit?

Hilfe!!!!

Vielen Dank und Grüsse,

Boris

  1. Gehts denn nicht mit onLoad=location.href=#anker ?

    Den Anker kannst du auch per query übergeben frame1.htm?=anker und dann mit location.search auslesen.

    1. Hallo NCoDer

      Gehts denn nicht mit onLoad=location.href=#anker ?

      ergibt im Opera eine Endlosschleife!

      MFG
      Detlef

      --
      - Wissen ist gut
      - Können ist besser
      - aber das Beste und Interessanteste ist der Weg dahin!
      1. moin, oder besser n8 ^^

        vielleicht etwas wie

        onload="if (location.href != '#anker') location.href'#anker';"

        gruss
        Thorsten

        1. Hallo Thorsten

          onload="if (location.href != '#anker') location.href'#anker';"

          dort fehlt ein "="      ^

          nützt nichts, weil die if-Abfrage ja vor dem Sprunf zum Anker erfolgt, also dieser zu dem Zeitpunkt noch nicht angesprungen wurde.
          Opera (zumindes 6.04) lädt bei jedem "location.href", sogar bei "location.hash" (was eigentlich dafür vorgesehen ist) die Seite neu und führt dann das "onload" natürlich nocheinmal aus.

          MFG
          Detlef

          --
          - Wissen ist gut
          - Können ist besser
          - aber das Beste und Interessanteste ist der Weg dahin!
  2. als <frame src=irgendwas.htm?ankername> funktioniert definitiv nicht!! Weder mit php noch mit javascript. Ab dem ? wird alles ignoriert.

    Die Lösung:

    parent.location.search im HTML des Frame irgendwas.htm gibt die zusätzlichen Parameter im HTML, welches das FrameSET aufruft wieder.

    ACHTUNG: funktioniert nicht mit frameset.htm?#anker!

    daher:

    im frame1.htm:
    ....
    <script java.....>
    functon GehezuAnker(){
    var anker=parent.location.search;
    anker="#"+anker;
    window.location.href=anker;
    <script>
    ...
    <body .. onLoad="javascript:GehezuAnker();"...>
    .....

    und im rufenden HTML:

    ...
    <a href"frameset.htm?ankername>
    ...

    Das funktioniert zumindest in MSIE 6.0, Opera 7.20 Mozilla und Netscape 7.1 , ohne dass es eine Endlosschleife gibt.

    Gruß,
    Boris