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.¿Cómo hago clic en un elemento en JavaScript?
Respuesta
El document.createEvent
documentation dice que "está en desuso El método createEvent Use event constructors lugar.".
lo que debe utilizar este método en lugar:
var clickEvent = new MouseEvent("click", {
"view": window,
"bubbles": true,
"cancelable": false
});
y el fuego en un elemento como esto:
element.dispatchEvent(clickEvent);
como se muestra here.
el único que funcionó para mí tanto en firefox como en cromo – deej
quizás debería aceptarse como respuesta ya que el actual es del '09 y usa funciones en desuso –
Excelente solución para Chrome. El código para obtener el elemento que luego ejecuta 'dispatchEvent (clickEvent);' para mí fue: 'var element = document.getElementById (" id-tag ");' – kbpontius
element.click() es un método estándar delineado por W3C DOM specification. Gecko/Firefox de Mozilla follows the standard y solo permite llamar a este método en elementos de ENTRADA.
entendido, pero no es útil cuando quiero simular mediante programación clics en elementos no INPUT. – Bruce
¿Estás tratando de seguir realmente el enlace o activar el onclick? Puede desencadenar un onclick con algo como esto:
var link = document.getElementById(linkId);
link.onclick.call(link);
interesante, voy a intentarlo. Esto es parte de un arnés de prueba, por lo que no sabemos de antemano en qué elemento específico vamos a hacer clic: es lo que especifique el caso de prueba. – Bruce
No necesita especificar un contexto; dado que onclick es una propiedad de 'link', el contexto ya estará configurado apropiadamente. – James
Esto no funcionó en Chrome. Se arrojó un error en la consola diciendo que el método "llamada" no existía. – kbpontius
Aquí es una función de trabajo transversal navegador (utilizable para otra cosa que clic manipuladores también):
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);
}
}
Descubrí que necesitaba usar 'el [etype]();' en la línea 3 para que IE activara el evento nativo (estaba probando con un manejador de clics; consulte http://jsfiddle.net/Pc8qE/) –
Para Para que esto funcione, tuve que usar una entrada de tipo enviar para Firefox y una entrada de tipo botón para IE. –
Para los enlaces de Firefox parece ser "especial". La única forma en que pude hacer que funcionara fue usar createEvent described here on MDN y llamar a la función initMouseEvent. Incluso que no funcionó por completo, tenía que contar manualmente el navegador para abrir 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;
}
}
cómo difiere de window.open (element.href, element.target) - en mi Firefox funciona exactamente igual, y muestra la fea barra amarilla – iirekm
Si configura el tercer último parámetro de MouseEvent en verdadero (lo que significa que metaKey El botón (CMD) se mantuvo pulsado al hacer clic en), esto no abriría la pestaña en una pestaña de fondo, ¿verdad? O lo haría? – Magne
utilicé la función de KooiInc mencionados anteriormente, pero tuve que usar dos tipos diferentes de entrada de un 'botón' para IE y un '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);
}
Tengo buscar y probado muchas sugerencias, pero esto es lo que terminó trabajando. 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.
- 1. Elemento de detección Hago clic en UIWebView
- 2. ¿Cómo averiguo qué javascript se ejecuta cuando hago clic en un elemento?
- 3. ¿Cómo cierro AlertDialog cuando hago clic en elemento ListView
- 4. JavaScript: Haz clic en el elemento
- 5. Javascript haga clic en el elemento
- 6. Use javascript para hacer clic en un pseudo-elemento?
- 7. Cambio HTML dependiendo de donde hago clic con javascript/jQuery
- 8. ¿Cómo puedo hacer que un elemento div sea editable (como un área de texto cuando hago clic en él)?
- 9. ¿Cómo abrir Windows Explorer cuando hago clic en un botón?
- 10. Javascript: simular un clic en un enlace
- 11. ¿Cómo hago clic en un JButton sin que el usuario haga clic en él?
- 12. Obtener elemento clic en ButtonSet
- 13. ¿Cómo puedo evitar que ListBox seleccione un elemento cuando hago clic con el botón derecho?
- 14. javascript amCharts elemento gráfico clic evento
- 15. Javascript Haga clic en evento que no se activa al hacer clic en el relleno de un elemento
- 16. ¿Cómo puedo eliminar un evento de clic de un elemento en Javascript?
- 17. ¿Cómo hago vim indent JavaScript en HTML?
- 18. ¿Cómo hago referencia a un archivo javascript?
- 19. WPF: ¿cómo manejo un clic en un elemento de ListBox?
- 20. Javascript: conseguir actuales contenidos "clic" del elemento
- 21. Haga clic en evento en elemento dinámico SIN jQuery
- 22. Android: hay un error cuando hago clic en mi editText
- 23. Simulando un clic en jQuery/JavaScript en un enlace
- 24. ¿Cómo hago que Ajax.ActionLink actualice un elemento en lugar de navegar por toda la página?
- 25. cómo conseguir elemento hecho clic en Three.js
- 26. ¿Cómo hago que un enlace no se pueda hacer clic?
- 27. Cómo agregar #hash clic a un elemento
- 28. Qué es 'clic()' en JavaScript
- 29. cómo responder a un elemento ContextMenuStrip clic
- 30. ¿Al hacer clic en el elemento principal, también se puede hacer clic en el elemento secundario?
Esta pregunta también fue respondida [aquí] (http://stackoverflow.com/questions/906486/how-can-i-programmatically-invoke-an-onclick-event-from-a-anchor-tag-while- mantener). –
Acepte [mi respuesta] (http://stackoverflow.com/a/22469115/865175) como solución, ya que varios usuarios también lo solicitaron. –