Niedawno zaimplementowałem Selectivizr na wewnętrznej stronie firmy, ponieważ potrzebujemy wsparcia dla IE7/8. Niestety, nasza strona dynamicznie ładuje zawartość za pośrednictwem jQuery/AJAX.Selectivizr powoduje, że rozwijane menu wyboru wymaga dwóch kliknięć do otwarcia w IE8 i poniżej
Aby rozwiązać ten problem, przeładowałem funkcję gotową do użycia jQuery, aby ponownie załadować Selectivizr po wykonaniu jakiegokolwiek zadania, do którego zostało ustawione. Mój kod wygląda następująco:
$(function() {
if ($('body.ie8, body.ie7, body.comp-view8, body.comp-view7').length > 0) {
(function() {
var original = jQuery.fn.ready;
var getSelectivizr;
jQuery.fn.ready = function() {
// Execute the original method.
original.apply(this, arguments);
clearTimeout(getSelectivizr);
getSelectivizr = setTimeout(function() {
$.getScript(selectivizr);
}, 50);
}
})();
}
});
Wystarczająco proste. Jednak członek zespołu niedawno odkrył błąd, który wydaje się być powiązany. W IE8/7 dowolne menu rozwijane, które jest dynamicznie ładowane na stronę (nie jestem pewien, czy listy rozwijane są statyczne, a żadna z tych stron ich nie ma), wymaga dwóch kliknięć, aby je otworzyć.
Mówiąc dokładniej, w IE8/7 pierwsze kliknięcie wydaje się "skupiać" na liście rozwijanej, a drugie otwiera. To widok zgodności, to faktycznie otwiera się na ułamek sekundy, a następnie zamyka. Drugie kliknięcie otwiera je dobrze (o ile pozostajesz skupiony na rozwijanym menu).
Założono, że może to być problem z działaniem Selectivizr, ponieważ nie został zaprojektowany do pracy z dynamicznie ładowanymi treściami, ale po odrobinie debugowania wygląda na to, że to setTimeout powoduje to dziwne zachowanie.
Mam całkowitą stratę jak to zrobić naprawić to bez usuwania mojej implementacji Selectivizr.
Warto zauważyć, że setTimeout jest konieczne, aby przeglądarka nie próbowała załadować Selectivizr wiele razy, jeśli wykonywane są różne wywołania AJAX, ponieważ może to spowodować poważne problemy z wydajnością w przeglądarce.
Uwaga: to pytanie nie odzwierciedla dokładnie problemu określonego w tytule, więc zaktualizowałem go, aby zapewnić lepsze wyszukiwanie! Po kilku tygodniach powracających do tego problemu zauważyłem, że moje wstępne debugowanie doprowadziło mnie na złą drogę. Przepraszam, ale mam na to odpowiedź, która, mam nadzieję, pomoże! :)
Czy korzystasz również z pakietu modernizacyjnego? czy to działa, możesz wyłączyć tryb zgodności? – hagensoft
Dlaczego konieczne jest ponowne wybieranie produktu Selectivizr? Myślałem, że to urządzenie typu "ładuj-raz-życie-na-stronie". –
Zignoruj mnie, przeczytałem tylko kilka wątków w Grupach dyskusyjnych Google, [tutaj] (https://groups.google.com/forum/?fromgroups=#!topic/ie-css3/h7Ld2ggJHqQ) i [tutaj] (https : //groups.google.com/forum/? fromgroups = #! topic/ie-css3/eWSsKW7yI9E) –