falsche Position für Ergebnisliste des ajax autocomplete im IE

Beim autoausfüllen ist mir ein Bug im IE aufgefallen, das die Ergebnisliste viel zu weit unten dargestellt wurde. Um das zu beheben habe ich zwei Änderungen

<div id="OBJECTupdate" style="display:none;"></div>

ändern in

<div id="OBJECTupdate" style="display:none;position:fixed;"></div>

Der zweite teil fixt es im Code der Bibliothek, weil auch die Beispielseite vom Toolkit das Ergebnis falsch dargestellt hat, diese Änderung hatte allerdings keine Verbesserung auf der ports.php Seite gebracht.

/* https://prototype.lighthouseapp.com/projects/8886/tickets/1286-error-in-elementcloneposition#ticket-1286-1 */
/*    var p = Element.viewportOffset(source), delta = [0, 0], parent = null;

element = $(element);

if (Element.getStyle(element, 'position') == 'absolute') {
parent = Element.getOffsetParent(element);
delta = Element.viewportOffset(parent);
}

if (parent == document.body) {
delta[0] -= document.body.offsetLeft;
delta[1] -= document.body.offsetTop;
}
*/
/* START FIX */
var p = Element.viewportOffset(source), delta = [0, 0];

// A delta of 0/0 will work for `position: fixed` elements, but
// for `position: absolute` we need to get the parent's offset.
if (Element.getStyle(element, 'position') === 'absolute') {
var parent = Element.getOffsetParent(element);
delta = (parent === document.body) ? [0, 0] : Element.viewportOffset(parent); // FIX
}

/* ENDE FIX */

This entry was posted in changes, configurations, solved and tagged , , , . Bookmark the permalink.