una tablas tabla eventos evento ejemplos ejemplo ejecutar desde datos con agregar javascript javascript-events

javascript - tablas - jquery



¿Cómo puedo activar un clic de evento de JavaScript? (8)

Advertencia justa:

element.onclick() no se comporta como se esperaba. Solo ejecuta el código dentro del onclick="" attribute , pero no activa el comportamiento predeterminado.

Tuve un problema similar con el botón de opción no configurado para verificar, aunque la función personalizada onclick funcionaba bien. Tuve que agregar radio.checked = "true"; para establecerlo Probablemente lo mismo a.onclick() y para otros elementos (después de a.onclick() debería haber también window.location.href = "url"; )

Tengo un hipervínculo en mi página. Estoy intentando automatizar una cantidad de clics en el hipervínculo para fines de prueba. ¿Hay alguna forma de simular 50 clics en el hipervínculo usando JavaScript?

<a href="#" target="_blank" onclick="javascript:Test("Test");">MSDN</a>

Estoy buscando el activador de evento onClick desde JavaScript.


Agrega una ID a tu enlace

<a href="#" target="_blank" id="my-link" onclick="javascript:Test(''Test'');">Google Chrome</a>

y llámalo en tu código de JavaScript:

var l = document.getElementById(''my-link''); for(var i=0; i<50; i++) l.click();


Esto es lo que uso: http://jsfiddle.net/mendesjuan/rHMCy/4/

Actualizado para trabajar con IE9 +

/** * Fire an event handler to the specified node. Event handlers can detect that the event was fired programatically * by testing for a ''synthetic=true'' property on the event object * @param {HTMLNode} node The node to fire the event handler on. * @param {String} eventName The name of the event without the "on" (e.g., "focus") */ function fireEvent(node, eventName) { // Make sure we use the ownerDocument from the provided node to avoid cross-window problems var doc; if (node.ownerDocument) { doc = node.ownerDocument; } else if (node.nodeType == 9){ // the node may be the document itself, nodeType 9 = DOCUMENT_NODE doc = node; } else { throw new Error("Invalid node passed to fireEvent: " + node.id); } if (node.dispatchEvent) { // Gecko-style approach (now the standard) takes more work var eventClass = ""; // Different events have different event classes. // If this switch statement can''t map an eventName to an eventClass, // the event firing is going to fail. switch (eventName) { case "click": // Dispatching of ''click'' appears to not work correctly in Safari. Use ''mousedown'' or ''mouseup'' instead. case "mousedown": case "mouseup": eventClass = "MouseEvents"; break; case "focus": case "change": case "blur": case "select": eventClass = "HTMLEvents"; break; default: throw "fireEvent: Couldn''t find an event class for event ''" + eventName + "''."; break; } var event = doc.createEvent(eventClass); event.initEvent(eventName, true, true); // All events created as bubbling and cancelable. event.synthetic = true; // allow detection of synthetic events // The second parameter says go ahead with the default action node.dispatchEvent(event, true); } else if (node.fireEvent) { // IE-old school style, you can drop this if you don''t need to support IE8 and lower var event = doc.createEventObject(); event.synthetic = true; // allow detection of synthetic events node.fireEvent("on" + eventName, event); } };

Tenga en cuenta que llama a fireEvent(inputField, ''change''); no significa que realmente cambiará el campo de entrada. El caso de uso típico para disparar un evento de cambio es cuando configura un campo mediante programación y desea que se input.value="Something" manejadores de eventos, ya que llamar a input.value="Something" no desencadenará un evento de cambio.


Estoy bastante avergonzado de que haya tantas aplicaciones parciales incorrectas o no divulgadas.

La forma más fácil de hacerlo es a través de Chrome u Opera (mis ejemplos usarán Chrome) usando la consola. Ingrese el siguiente código en la consola (generalmente en 1 línea):

var l = document.getElementById(''testLink''); for(var i=0; i<5; i++){ l.click(); }

Esto generará el resultado requerido


IE9 +

function triggerEvent(el, type){ var e = document.createEvent(''HTMLEvents''); e.initEvent(type, false, true); el.dispatchEvent(e); }

Ejemplo de uso:

var el = document.querySelector(''input[type="text"]''); triggerEvent(el, ''mousedown'');

Fuente: https://plainjs.com/javascript/events/trigger-an-event-11/


Qué

l.onclick();

does está llamando exactamente a la función onclick de l , es decir, si ha establecido una con l.onclick = myFunction; . Si no ha configurado l.onclick , no hace nada. A diferencia de,

l.click();

simula un clic y dispara todos los manejadores de eventos, ya sea que se haya agregado con l.addEventHandler(''click'', myFunction); , en HTML o de cualquier otra forma.


.click() no funciona con Android (consulte los documentos de mozilla en la sección de dispositivos móviles). Puede desencadenar el evento click con este método:

function fireClick(node){ if (document.createEvent) { var evt = document.createEvent(''MouseEvents''); evt.initEvent(''click'', true, false); node.dispatchEvent(evt); } else if (document.createEventObject) { node.fireEvent(''onclick'') ; } else if (typeof node.onclick == ''function'') { node.onclick(); } }

De esta publicación


Use un marco de prueba

Esto podría ser útil - http://seleniumhq.org/ - Selenium es un sistema de prueba automatizado de aplicaciones web.

Puedes crear pruebas usando el plugin de Firefox Selenium IDE

Disparo manual de eventos

Para activar manualmente los eventos de la forma correcta, tendrá que usar diferentes métodos para diferentes navegadores, ya sea el.dispatchEvent o el.fireEvent donde el será su elemento Anchor. Creo que ambos requerirán construir un objeto Evento para pasar.

La manera alternativa, no del todo correcta, rápida y sucia sería esta:

var el = document.getElementById(''anchorelementid''); el.onclick(); // Not entirely correct because your event handler will be called // without an Event object parameter.