Ich habe eine HTML-Seite, in der es eine < div> gibt, die Inhalte enthält, die breiter sind als sie selbst; Der Überschuss wird mit dem Stil "Überlauf: versteckt" unsichtbar gemacht.Vermeiden Sie unerwünschte Scrolling durch Tastaturnavigation in IE ausgelöst?
Es kann Links in diesem Inhalt geben. Wenn Sie in IE8 (aber nicht in Firefox 3.6) die Tastatur (d. H. Die Tabulatortaste) verwenden, um den Fokus auf eine am rechten Rand abgeschnittene Verknüpfung zu setzen, scrollt IE das gesamte div weit genug nach links, um die gesamte Verknüpfung sichtbar zu machen. (Das Gleiche passiert mit Links auf der linken Seite, wenn sie den Fokus haben, wenn das Div bereits gescrollt wurde - es scrollt den Inhalt nach rechts, um den gesamten Link sichtbar zu machen.)
Ich kann versuchen, dieses unerwünschte Scrollen zu verbergen Setzen Sie den scrollLeft-Wert auf das div, wenn es nicht mehr reagiert - jQuery macht das einfach. Aber ich würde es vorziehen, wenn möglich, einen Stil oder eine Einstellung zu verwenden, um das Scrollen an erster Stelle zu verhindern. Wie bereits erwähnt, scrollt Firefox einen teilweise ausgeschnittenen Link nicht in die Ansicht, wenn er den Fokus erhält. Idealerweise sollte IE dazu gebracht werden, sich auf die gleiche Weise zu verhalten.
Beispiel HTML unten. Verwenden Sie im IE die Tabulatortaste (oder die Umschalttaste + Tabulatortaste), um den Fokus auf die einzelnen Verknüpfungen der Reihe nach zu setzen, damit der Inhalt der Box sich seitwärts verschiebt.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Demo of undesired scrolling</title>
</head>
<body>
<a href="http://www.w3.org">Before</a>
<div style="width: 400px; border: 1px solid gray; overflow: hidden;">
<div>
<div style="width: 450px; text-align: center;">
<a href="http://www.w3.org">Somewhere in the middle</a>
</div>
<div style="width: 450px; text-align: left;">
<a href="http://www.w3.org">Over on the left</a>
</div>
<div style="width: 450px; text-align: right;">
<a href="http://www.w3.org">Over on the right</a>
</div>
</div>
</div>
<a href="http://www.w3.org">After</a>
</body>
</html>
Vielen Dank im Voraus für jede Einsicht!
Dies ist sehr ähnlich zu [eine Frage, die ich gerade gefragt habe] (http://stackoverflow.com/q/13827409/925897). – brentonstrine