Hi Dalton,
ah, ich glaub ich versteh jetzt was Du meinst (wenn auch mein Mozilla offensichtlich so schlau ist, die fragliche Seite lieber gar nicht in die History aufzunehmen und daher das unerwünschte Verhalten bei mir nicht auftritt).
Der Link zum Shop ist so gecoded:
<a onclick="MM_openBrWindow('shopindex.htm', 'menubar=yes,resizable=yes,width=620,height=420')" href="shopindex.htm"><img img src=images/m_shop1.jpg border=0></a>
Da passiert folgendes: onclick wird ein neues Fenster geöffnet mit der Shopeinstiegsseite. Da kein return false; notiert ist, wird auch der im href notierte Link ausgeführt, und zwar innerhalb des dortigen Framesets.
shopindex.htm enthält jetzt aber wieder einen Frame-Sprenger:
if(top.frames.length > 0) top.location.href=self.location;
Und da ist er, der "böse" location.href.
Es passiert folgendes:
[1] Hauptseite. Klick auf Link "Shop" führt (neben dem neuen Fenster) auch zu
[2] shopindex.htm innerhalb Frameset. Das Frame-Sprenger Script erkennt das und führt zu
[3] shopindex.htm im Hauptfenster.
Ein Click auf "Zurück" führt Dich zu [2], das Frame-Sprenger-Script wird aktiv und leitet weiter zu [3]. Mit normalem Zurück-Button kommst Du so - wie Du ja beschreibst - nicht zur Hauptseite zurück.
Du kannst folgendes tun:
1. Ersetze top.location.href=self.location; durch top.location.replace(self.location); - das hinterlässt keinen Eintrag in der History, und das unerwünschte Verhalten tritt nicht auf.
2. Gib Deinem Link einen target auf "_top", also:
<a onclick="MM_openBrWindow('shopindex.htm', 'menubar=yes,resizable=yes,width=620,height=420')" href="shopindex.htm" target="_top"><img src=images/m_shop1.jpg border=0></a>
Damit wird das Frameset "gelöscht" und shopindex.htm außerhalb von Frames dargestellt - der Frameset-Sprenger braucht überhaupt nict anuzspringen.
3. Vermutlich ist eh ein Unfall, dass shopindex.htm doppelt (im neuen Fenster _und_ im Hauptfenster) angezeigt wird - oder? Du verhinderst das, wenn Du dem onclick noch ein return false; beifügst, also:
<a onclick="MM_openBrWindow('shopindex.htm', 'menubar=yes,resizable=yes,width=620,height=420'); return false;" href="shopindex.htm" target="_top"><img src=images/m_shop1.jpg border=0></a>
return false; verhindert, dass der durch href definierte Link ausgeführt wird. Damit hättet Du dann: shopindex.htm im neuen Fenster, die Hauptseite unverändert im Hauptfenster. Leute ohne JavaScript erhalten dann kein neues Fenster, dafür aber shopindex.htm im Hauptfenster. Wenn auch Leute ohne JavaScript die shopindex.htm in nem Fenster sehen sollen, kannst Du target="_top" durch target="_blank" ersetzen. In der Regel ist das die optimale Lösung.
Trotzdem solltest Du außerdem auch noch die Änderung von Punkt 1 durchführen; sie ist dafür gedacht, dass ein eventuelles fremdes Frameset gesprengt wird. In diesem Falle wurde das unerwünschte Verhalten immer noch auftreten, wenn Du den Code da nicht änderst.
Grüße,
Utz