Así que estoy modificando una página web, tiene un botón, está codificado para que mouseup vaya a un enlace, quiero cambiar esto, agregar funciones de mouseup no funciona; mousedown funciona, pero tengo que mantener presionado el mousedown por un segundo o dos, de lo contrario, la función original aún ocurre.
var duma = $('input')[0].value; var siq = $('.inline-nav-menu__link')[1]; $(siq).mousedown(function(){ window.location = 'https://www.google.com/search?q='+duma+'&sxsrf=APq-WBtOrInsFht_VAH6gWFlCceGK46ylQ:1649149133894&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjdvbqix_z2AhWtxzgGHW7GCh0Q_AUoAXoECAIQAw&biw=1366&bih=696&dpr=1'; })
Esto funciona, pero tengo que mantener presionado el mouse durante un rato Cambiar eso a mouseup no funciona
Inspeccioné más el elemento, tenía un atributo llamado formAction que tenía el enlace a la página respectiva. Cambiar dicho atributo resolvió el primer problema. Pero ahora la página va a google web en lugar de imágenes...
var duma = $('input')[0].value; var siq = $('.inline-nav-menu__link')[1]; $(siq)[0].formAction='https://www.google.com/search?tbm=isch&q='+duma+'';
Cuando agrega un detector de eventos, está creando una función (que es un objeto Javascript) y vinculándola a un evento específico.
Para eliminar el oyente, debe pasar a .removeEventListener()
una referencia a esa misma función.
Al trabajar con jQuery, también existe el element.off('event_type')
, pero solo funciona en oyentes previamente conectados con el método jQuery .on('event_type')
.
Si el oyente se refiere a una función con nombre , puede hacer element.removeEventListener('event', functionName)
.
Si el oyente es una función anónima, haría una de estas:
A) clone el elemento con el método jQuery clone()
, de modo que el elemento clonado ya no tenga ningún detector de eventos adjunto. Entonces podría adjuntar sus propios oyentes.
B) si no necesita el detector de eventos original, también puede deshabilitarlo de la siguiente manera:
function stopEvent(event) { event.stopImmediatePropagation(); } element.addEventListener('mouseup', stopEvent, true);
De esta manera, al usar la opción true
en .addEventListener
, detiene la propagación de cualquier evento al comienzo de la fase de captura , por lo que el evento en sí nunca alcanzará su objetivo (solo para ese evento mouseup
).
La desventaja de la segunda opción es que ya no puede usar ese evento en ese elemento, ya que nunca alcanzará el objetivo. Pero, como usó una función con nombre para detener la propagación, ahora puede eliminarla con element.removeEventListener('mouseup', stopEvent, true)
y hacer que el detector de eventos original vuelva a funcionar (porque al eliminar stopEvent
, ahora el evento se propaga de nuevo a su objetivo).
Lo averigué. Necesario para cambiar los valores del formulario. Usé la información en los formularios de búsqueda de Google del enlace. https://stackoverflow.com/a/65032682/10824788
var duma = $('input')[0].value; var siq = $('.inline-nav-menu__link')[1]; var derka = 'https://www.google.com/search?tbm=isch&'; $(siq)[0].form[2].name="q"; $(siq)[0].form[2].value=duma; $(siq)[0].form[4].name="tbm" $(siq)[0].form[4].value="isch" $(siq)[0].formAction=derka;