En cliquant sur un tag dans IE6 et FF en utilisant jQuery
-
18-09-2019 - |
Question
J'ai un div
renvoyé par un appel ajax qui contient un a
. Je dois cliquer dans javascript, mais je ne peux pas trouver un moyen qui fonctionne à la fois IE6 et FF.
Cela fonctionne en FF, mais génère un objet requis erreur dans IE6:
$('#mylink').click();
Cela fonctionne dans IE6, mais génère un $ ( "# MyLink"). Get (0) .cliquez n'est pas une fonction erreur dans FF.
$('#mylink').get(0).click();
Toutes les idées sur pourquoi est-ce et quel genre de solution est disponible?
EDIT:
Utilisation trigger retourne la même erreur que click dans IE6:
$('#mylink').trigger('click');
EDIT:
Placer le code dans une minuterie ne change pas le comportement:
setTimeout(function() {
$('#mylink').click();
}, 100);
EDIT:
Pour contourner ce problème, cela fonctionne. Mais ce serait bien de mieux comprendre la question. Ce n'est pas seul un problème jQuery (ou peut-être pas du tout). L'erreur IE6 JavaScript sort de MicrosoftAjax.js il a quelque chose à voir avec cela.
var anchor = $('#mylink');
if (anchor.get(0).click) {
anchor.get(0).click();
}
else {
anchor.click();
}
La solution
Si $ ( "# MyLink"). Cliquez sur () ne se trouve pas, mais $ ( "# MyLink"). Get (0) .cliquez () est, alors pourriez-vous utiliser comme base pour un test?
par exemple
if ($("#mylink").click)
{
$("#mylink").click()
}
elseif ($("#mylink").get(0))
{
$("#mylink").get(0).click();
}
Loin d'être idéal, mais je sais que telle est la façon des choses lorsqu'ils traitent avec IE6
Autres conseils
La méthode get retourne l'élément DOM. Vous devez utiliser par exemple à la place.
$('#mylink').eq(0).click();
Que diriez-vous en utilisant un déclencher ?
$("#mylink").trigger('click');
Essayez:
$('#mylink').trigger('click');
Si être le même que votre premier exemple, bien que ... Faites des alertes dans IE pour vous assurer que l'élément existe et tout ce qui (peut-être vous avez une pièce d'identité dupliquée quelque part ou quelque chose?).
objet requis est probablement généré parce que IE ne peut pas trouver le sélecteur de #mylink
dans le temps. Assurez-vous de faire l'appel dans la fonction de rappel de la réussite ou de fournir une fonction de temporisation qui vérifie si l'élément est disponible avant le déclenchement du clic:
window.setTimeout(function() {
if ($("#mylink").length) {
$("#mylink").trigger('click');
return false;
}
window.setTimeout(arguments.callee, 1);
},1);