Hier ist meine aktuelle Situation:Wie kann ich vorübergehend verhindern, dass ein scrollbares div scrollt?
Ich habe eine Webseite mit ein paar scrollbaren divs. Jedes dieser divs enthält eine Anzahl von Objekten. Ich verwende YUI, um Popup-Menüs von Aktionen anzuzeigen, die für jedes Objekt ausgeführt werden können. Jedem Objekt ist ein eigenes Menü zugeordnet, das dynamisch erstellt und angezeigt wird. Die Popup-Menüs können groß sein und die Grenzen des scrollbaren div überlappen.
Von dem, was ich glaube, sind Probleme mit Fokus (die Menüs müssen zugänglich sein), wenn ich den Mauszeiger über eine Aktion, die auf einer Kante des scrollbaren Div liegt, das div automatisch scrollt, den Inhalt verschieben, aber verlassen das Menü ist stationär. Der Versuch, das Menü dynamisch zu verschieben, wenn dies geschieht, ist nicht etwas, was ich tun möchte, da ich glaube, dass es eine schlechte Benutzererfahrung bieten würde.
Also muss ich verhindern, dass dieses fokussierte Menü das div scrollen. Meine Idee, die beste Benutzeroberfläche zu bieten, besteht darin, zu verhindern, dass diese inneren Divs beim Öffnen eines Menüs scrollen. Dadurch bleibt das Menü an der optimalen Position, um dem Benutzer anzuzeigen, auf welches Element reagiert wird. Wenn der Benutzer durch das Feld blättern möchte, kann er klicken, um das Menü zu schließen und normal zu blättern.
Wie kann ich das tun? Ich brauche eine Lösung, die über die wichtigsten Browser hinweg funktioniert.
Mein erster Gedanke war, das Ereignis onscroll für dieses bestimmte Element zu hören. Leider scheint es keinen einfachen Weg von dort zu geben, um das Scrollen zu verhindern. Zum einen scheint mein Javascript-Ereigniscode ausgeführt zu werden, nachdem das tatsächliche Scrollen stattgefunden hat.
Dann dachte ich, dass da mein Code ausgeführt wird, nachdem das Objekt gescrollt hat, ich habe gerade zurückgesetzt konnte obj.scrollTop und obj.scrollLeft. Natürlich scheint dies zu funktionieren, obwohl ich mir Sorgen mache, dass der Benutzer bei langsamen Browsern den Inhalt im div "herumspringen" sieht. Es wäre auch sehr schön, wenn die Menge des gescrollten Elements Teil des Ereignisobjekts ist. Ist es irgendwo drin stecken? Ich suche nach einer Alternative zum Speichern der scrollTop- und scrollLeft-Variablen für dieses Element und dann deren Verwendung, während das Scrollen vorübergehend deaktiviert ist.
Was ist der beste Weg, um das gesamte Problem zu lösen?
Warum möchten Sie das tun? Es klingt wie ein Benutzerfreundlichkeits-Albtraum. Kannst du erklären, was der Nutzungskontext ist? – Rahul
Meine Vermutung ist, die EU zu zwingen, Bedingungen zu lesen, oder eine Lizenzvereinbarung –
@Rahul Ich habe meine Frage mit detaillierteren Informationen über das, was ich versuche, aktualisiert. Es ist eine grobe Situation und ich denke, dass dies der beste Weg ist, damit umzugehen. –