JQuery UI Autocomplete nicht mit den Pfeiltasten in Firefox scrollen

8

Ich arbeite mit der JQuery UI Autocomplete 1.8 mit JQuery 1.6.1. (Neuere Versionen von Software zu bekommen ist in meiner Firma extrem schwierig, daher bleibe ich bei diesen.)

Ich habe eine lange Liste von Strings im Autocomplete-Fensterbereich, also habe ich die .ui-Autocomplete-Klasse wie folgt gestaltet.

%Vor%

Jetzt, wenn das Dropdown-Feld für die automatische Vervollständigung angezeigt wird, hat es eine Bildlaufleiste wie gewünscht. Wenn ich jedoch mit den Pfeiltasten navigiere, navigiert das Panel nicht mit der Auswahl. Die Auswahl geschieht immer noch. Irgendwann renne ich vom Ende der Liste und der Cursor wird an den Anfang zurückgegeben. Alles verhält sich wie erwartet, außer dass der Bildlaufbereich nicht gescrollt wird.

In Tests außerhalb der Arbeit, wo ich Zugang zu anderen Browsern habe, finde ich, dass Chrome richtig scrollt und IE 8 korrekt scrollt. Ist das ein Bug mit dem Firefox 3.6 Linux Browser oder fehlt mir etwas?

Ich bin mit Handschellen an Firefox 3.6 gehaftet: (Mozilla / 5.0 (X11; U; Linux i686 (x86_64); de-US; rv1.9.2.12) Gecko / 20101026 Firefox / 3.6.1.2)

Ist das ein Fehler mit dieser Version des Browsers oder fehlt mir etwas?

EDIT: Ich konnte eine Maschine mit IE6 und einer mit Firefox 3.5.3 finden. ie6 scrollte und Firefox 3.5.3 nicht. Es scheint, dass es ein Problem mit Firefox sein könnte.

    
DRaehal 12.08.2011, 20:19
quelle

3 Antworten

5

Ich hatte ein ähnliches Problem mit unserer App, die auf jQuery v1.7.2 und jQuery UI v1.8.11 in jedem Browser ausgeführt wird. Ich habe jedoch festgestellt, dass es auf jQuery UI v1.8.13 changelog .

Nach der Korrektur im Changeset überschrieb ich lediglich zwei Funktionen wie unten beschrieben und behebt das Problem.

%Vor%     
InitialV 28.11.2012, 22:38
quelle
2

Lösung: Das Upgrade auf jQuery UI 1.8.18 hat dieses Problem für mich behoben.

Dies ist keine Antwort, aber es könnte weitere Informationen zu dem Problem liefern. Wenn Sie den Anrufen folgen, wenn Sie bei geöffnetem Menü die Nach-oben- oder Nach-unten-Taste drücken, gelangen Sie zur Methode activate des Menü-Widgets, die die hasScroll-Methode aufruft (Zeile 5487 mit v1.8.11);

%Vor%

Das Problem ist, dass das scrollHeight-Attribut nicht für das Menü ul-Element definiert ist und daher diese Methode immer false zurückgibt.

Hier ist die Aktivierungsmethode:

%Vor%

Auch wenn Sie erzwingen, dass die hasScroll-Methode "true" zurückgibt, stoßen Sie auf ein anderes Problem, da das scrollTop-Attribut ebenfalls nicht definiert ist.

Ich werde Sie wissen lassen, ob ich eine Lösung für dieses Problem finde, da es auch meine Anwendung plagt.

    
Nick Olsen 21.12.2011 18:01
quelle
0

Ich habe festgestellt, dass this.element.attr("scrollHeight") in

%Vor%

gibt undefined zurück. Wenn Sie stattdessen this.element.attr("scrollHeight") zu this.element.prop("scrollHeight") ändern, erhalten Sie einen scrollHeight.

Aber dann erscheint das gleiche Problem in activate: function (event, item) { , also müssen Sie auch alle Vorkommen von

ändern

this.element.attr("scrollTop") bis this.element.prop("scrollTop")

auch in dieser Funktion, damit es funktioniert.

Sie können .prop () in der jQuery-API nachlesen , aber der Grund dafür ist im Grunde

  

Vor jQuery 1.6 berücksichtigte die .attr () -Methode manchmal Eigenschaftswerte beim Abrufen einiger Attribute, was zu inkonsistentem Verhalten führen konnte. Ab jQuery 1.6 bietet die .prop () -Methode eine Möglichkeit, Eigenschaftswerte explizit abzurufen, während .attr () Attribute abruft.

    
Johan Alkstål 01.03.2012 12:35
quelle