Recentemente ho implementato Selectivizr su un sito Web aziendale interno in quanto è necessario supportare IE7/8. Sfortunatamente, il nostro sito fa un sacco di caricamento di contenuti dinamici tramite jQuery/AJAX.Selectivizr consente di selezionare il menu a discesa per richiedere due clic per aprire in IE8 e sotto
Per risolvere questo problema, ho sovraccaricato la funzione jQuery ready per ricaricare Selectivizr dopo che ha eseguito qualsiasi compito fosse stato impostato. Il mio codice è simile al seguente:
$(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);
}
})();
}
});
Abbastanza semplice. Tuttavia, un compagno di squadra ha recentemente scoperto un bug che sembra essere correlato. In IE8/7 ogni dropdown di selezione che viene caricato dinamicamente nella pagina (non sono sicuro che i dropdown statici vengano eseguiti e nessuna di queste pagine li abbia), richiede due clic per aprirlo.
Per essere più specifici, in IE8/7, il primo clic sembra "mettere a fuoco" nel menu a discesa, mentre il secondo lo apre. Compatibilità Visualizza, in realtà si apre per un frazione di secondo e poi si chiude. Il secondo clic lo apre bene (purché rimani concentrato sul menu a discesa).
Avevo pensato che potesse essere un problema con ciò che Selectivizr stava facendo, in quanto non era progettato per funzionare con contenuti caricati dinamicamente, ma dopo un po 'di debug, sembra che sia il setTimeout a causare questo strano comportamento.
Sono a una completa perdita di come risolvere senza rimuovere la mia implementazione Selectivizr.
È probabilmente importante notare che setTimeout è necessario per impedire al browser di tentare di caricare Selectivizr più volte se vengono effettuate chiamate AJAX diverse poiché ciò può causare seri problemi di prestazioni all'interno del browser.
Nota: questa domanda non riflette in modo accurato il problema indicato nel titolo, quindi l'ho aggiornato per fornire una ricerca migliore! Dopo essere tornato a questo problema poche settimane dopo, ho riconosciuto che il mio debug iniziale mi aveva portato sulla strada sbagliata. Scusate la gente, ma ho fornito una risposta a ciò che spero di aiutare! :)
stai usando anche modernizr? funziona, potresti disattivare la modalità di compatibilità? – hagensoft
Perché Selectivizr deve essere nuovamente caricato? Pensavo fosse un dispositivo carico-una-volta-per-la-vita-della-pagina. –
Ignora me, ho appena letto un paio di thread in Google Gruppi, [qui] (https://groups.google.com/forum/?fromgroups=#!topic/ie-css3/h7Ld2ggJHqQ) e [qui] (https : //groups.google.com/forum/? fromgroups = #! topic/ie-css3/eWSsKW7yI9E) –