Facendo clic su un tag in IE6 e FF utilizzando jQuery
-
18-09-2019 - |
Domanda
Ho un div
che viene restituito da una chiamata AJAX che contiene un a
. Ho bisogno di clic su di esso in javascript, ma non riesco a trovare un modo che funziona sia in IE6 e FF.
Questo funziona in FF, ma genera un oggetto desiderato Errore in IE6:
$('#mylink').click();
Questo funziona in IE6, ma genera un $ ( "# MyLink"). Get (0) .Cliccate non è una funzione Errore in FF.
$('#mylink').get(0).click();
Tutte le idee sul perché questo è e che tipo di soluzione è disponibile?
EDIT:
Utilizzo di trigger restituisce lo stesso errore come click in IE6:
$('#mylink').trigger('click');
EDIT:
Mettere il codice in un timer non cambia il comportamento:
setTimeout(function() {
$('#mylink').click();
}, 100);
EDIT:
Per risolvere il problema, questo funzioni. Ma sarebbe bello per capire meglio il problema. Questo non è un problema di jQuery solo (o forse a tutti). L'errore IE6 JavaScript esce MicrosoftAjax.js in modo che abbia qualcosa a che fare con questo.
var anchor = $('#mylink');
if (anchor.get(0).click) {
anchor.get(0).click();
}
else {
anchor.click();
}
Soluzione
Se $ ( "# MyLink"). Click () non viene trovato, ma $ ( "# MyLink"). Get (0) .Cliccate () è, allora si potrebbe usare questo come base per un test?
es
if ($("#mylink").click)
{
$("#mylink").click()
}
elseif ($("#mylink").get(0))
{
$("#mylink").get(0).click();
}
Lungi dall'essere ideale lo so, ma tale è il modo in cui le cose quando si tratta di IE6
Altri suggerimenti
Il metodo get restituisce l'elemento DOM. Si dovrebbe usare invece ad es.
$('#mylink').eq(0).click();
Come sull'utilizzo di un rel="nofollow innescare ?
$("#mylink").trigger('click');
Prova:
$('#mylink').trigger('click');
In caso essere lo stesso del vostro primo esempio, anche se ... Fare alcuni avvisi di IE per assicurarsi che l'elemento esiste e tutto quello che (forse si dispone di un ID duplicato da qualche parte o qualcosa del genere?).
oggetto richiesto è probabilmente generato perché IE non riesce a trovare il selettore #mylink
nel tempo. Assicurati di fare la chiamata nella funzione di callback successo o fornire una funzione di timeout che controlla se l'elemento è disponibile prima di far scattare il clic:
window.setTimeout(function() {
if ($("#mylink").length) {
$("#mylink").trigger('click');
return false;
}
window.setTimeout(arguments.callee, 1);
},1);