pagina otra hipervinculo hacer enlace ejemplos ejemplo como javascript firefox dom javascript-events dhtml

otra - ¿Cómo hago clic en un elemento en JavaScript?



getelementbyid javascript ejemplo (7)

¿Estás tratando de seguir realmente el enlace o activar el onclick? Puede activar un clic en un clic con algo como esto:

var link = document.getElementById(linkId); link.onclick.call(link);

En IE, puedo simplemente llamar a element.click () desde JavaScript, ¿cómo logro la misma tarea en Firefox? Idealmente, me gustaría tener un JavaScript que funcione igualmente bien entre navegadores, pero si es necesario, tendré un JavaScript diferente para cada navegador.


Aquí hay una función de trabajo de navegador cruzado (utilizable para otros manejadores que no sean click):

function eventFire(el, etype){ if (el.fireEvent) { el.fireEvent(''on'' + etype); } else { var evObj = document.createEvent(''Events''); evObj.initEvent(etype, true, false); el.dispatchEvent(evObj); } }


Para los enlaces de Firefox parece ser "especial". La única forma en que pude hacer que esto funcionara fue utilizar el evento createEvent descrito aquí en MDN y llamar a la función initMouseEvent. Incluso eso no funcionó por completo, tuve que decirle manualmente al navegador que abra un enlace ...

var theEvent = document.createEvent("MouseEvent"); theEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); var element = document.getElementById(''link''); element.dispatchEvent(theEvent); while (element) { if (element.tagName == "A" && element.href != "") { if (element.target == "_blank") { window.open(element.href, element.target); } else { document.location = element.href; } element = null; } else { element = element.parentElement; } }


Usando jQuery puedes hacer exactamente lo mismo, por ejemplo:

$("a").click();

Lo cual hará "clic" en todos los anclajes de la página.


Utilicé la función de KooiInc enumerada anteriormente pero tuve que usar dos tipos de entrada diferentes, un ''botón'' para IE y otro ''enviar'' para FireFox. No estoy exactamente seguro de por qué, pero funciona.

// HTML

<input type="button" id="btnEmailHidden" style="display:none" /> <input type="submit" id="btnEmailHidden2" style="display:none" />

// en JavaScript

var hiddenBtn = document.getElementById("btnEmailHidden"); if (hiddenBtn.fireEvent) { hiddenBtn.fireEvent(''onclick''); hiddenBtn[eType](); } else { // dispatch for firefox + others var evObj = document.createEvent(''MouseEvent''); evObj.initEvent(eType, true, true); var hiddenBtn2 = document.getElementById("btnEmailHidden2"); hiddenBtn2.dispatchEvent(evObj); }

Busqué e intenté muchas sugerencias, pero esto fue lo que terminó funcionando. Si tuviera más tiempo, me gustaría investigar por qué enviar trabajos con FF y botón con IE, pero eso sería un lujo en este momento, y así sucesivamente hasta el próximo problema.



La document.createEvent document.createEvent dice que " El método createEvent está en desuso. Use los constructores de eventos en su lugar " .

Entonces deberías usar este método:

var clickEvent = new MouseEvent("click", { "view": window, "bubbles": true, "cancelable": false });

y prenderlo en un elemento como este:

element.dispatchEvent(clickEvent);

como se muestra here .