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();
 }
Était-ce utile?

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top