Pregunta

Tengo un div que se devuelve desde una llamada ajax, que contiene un a. Necesito hacer clic en él en javascript, sin embargo no puedo encontrar un camino que funciona tanto en IE6 y FF.

Esto funciona en FF, pero genera un objeto requerido error en IE6:

$('#mylink').click();

Esto funciona en IE6, pero genera un $ ( "# mivinculo"). Get (0) .click no es una función error en FF.

$('#mylink').get(0).click();

¿Alguna idea sobre por qué es y qué tipo de solución está disponible?

EDIT:

Uso del disparador devuelve el mismo error como hacer clic en IE6:

$('#mylink').trigger('click');

EDIT:

La colocación del código en un contador de tiempo no cambia el comportamiento:

 setTimeout(function() {
  $('#mylink').click();
 }, 100);

EDIT:

Como solución, esto funciona. Pero sería bueno para comprender mejor el tema. Este no es un tema de jQuery sola (o tal vez en absoluto). El error IE6 JavaScript sale de MicrosoftAjax.js por lo que tiene algo que ver con eso.

 var anchor = $('#mylink');
 if (anchor.get(0).click) {
  anchor.get(0).click();
 }
 else {
  anchor.click();
 }
¿Fue útil?

Solución

Si no se encuentra $ ( "# mivinculo"). Click (), pero $ ( "# mivinculo"). Get (0) .click () es, entonces podría usar esto como la base para una prueba?

por ejemplo

if ($("#mylink").click)
{
    $("#mylink").click()
}
elseif ($("#mylink").get(0))
{
    $("#mylink").get(0).click();
}

lejos de ser ideal, pero sé que tal es la forma de las cosas cuando se trata de IE6

Otros consejos

El método get devuelve el elemento DOM. Debe utilizar por ejemplo en su lugar.

$('#mylink').eq(0).click();

¿Y si uso un rel="nofollow desencadenar ?

$("#mylink").trigger('click');

Probar:

$('#mylink').trigger('click');

debería ser el mismo que el primer ejemplo, aunque ... Hacer algunas alertas en IE para asegurarse de que el elemento existe y todo lo que (tal vez tener un ID duplicado en algún lugar o algo?).

El objeto requerido es probable generado porque el IE no puede encontrar el selector de #mylink en el tiempo. Asegúrese de hacer la llamada en la función de devolución de llamada de éxito o de proporcionar una función de tiempo de espera que comprueba si el elemento está disponible antes de activar el clic:

window.setTimeout(function() {
    if ($("#mylink").length) {
        $("#mylink").trigger('click');
        return false;
    }
    window.setTimeout(arguments.callee, 1);
},1);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top