Verhindert # Anker in einem iframe vom Scrollen des Browserfensters

9

Wenn eine Seite einen iframe mit einer URL lädt, die auf # endet, scrollt die übergeordnete Seite so, dass sich der iframe-Rumpf oben im Browserfenster befindet.

Demo: Ссылка

Wenn die URL in # endet, z. http://foo.com# , der Browser geht davon aus, dass Sie zum Anfang der Seite wechseln möchten.

Wie verhindern Sie, dass das übergeordnete Fenster scrollt, wenn ein iframe mit einem Hash-Fragment geladen wird?

Das Problem tritt in Chrome auf und ist nicht sicher, ob es sich um ein Problem in anderen Browsern handelt.

Im Moment ist die beste Lösung, die ich habe el.addEventListener('scroll', ...) zu verwenden, um scrollTop auf 0 zurückzusetzen, wenn es nicht schon 0 ist. Das funktioniert, aber das Scrollen nach unten und das Scrollen nach oben sind beide sehr auffällig.

    
Jamie Wong 12.10.2011, 22:22
quelle

2 Antworten

0

Nicht sicher, dass dies möglich ist, aber Sie sollten versuchen, das window.onhashchange-Ereignis anzuzapfen und den Standard zu verhindern. Wenn nicht, müssen Sie den Hash entfernen, wenn nichts folgt.

    
Phillip Burch 12.10.2011 23:46
quelle
0

Ich weiß, dass dies eine alte Frage ist, aber ich stieß auf meine Suche nach dem gleichen Problem. Ich habe gerade eine Lösung gefunden, die in Chrome wunderbar funktioniert.

%Vor%

Der Link href wird für die Statusleiste verwendet, aber wegen des return false; am Ende geht er nicht irgendwo hin. Dann machst du einfach deine Weiterleitung (in meinem Fall war es ein document.formName.submit(); ) in deinem someFunction(); . Wenn man darüber nachdenkt, könnte man alles inline machen, aber das scheint keine gute Form zu sein, es sei denn, man hat nur eine Sache zu tun.

Hinweis: Wenn Ihr someFunction(); am Ende return false; hat, reicht das nicht aus, um das Springen zu verhindern.

    
dstalor 20.03.2013 10:51
quelle

Tags und Links