Llevo horas intentándolo y no consigo que funcione. He escrito un script de contenido que se ejecuta cuando el usuario carga una página. El método click() simplemente no funcionará cuando intento hacer clic en un elemento. He probado de varias formas y siempre funciona desde la consola, pero no cuando cargo la página.
El elemento en el que quiero hacer clic:
<a id="startButton" href="javascript: popupHand.showPopup('popupLoginV2','loginHand.init()','','',true);" class="buttonGreen1 buttonSize1">Megpörgetem</a>manifest.json - parte del script de contenido
{ "content_scripts": [ { "matches": ["*://*.bonuszbrigad.hu/bonuszkerek"], "js": ["plugin/jquery-3.2.0.min.js", "js/page_wheel.js"], "run_at": "document_end" } ], }page_wheel.js
function spinWheel() { var spinButton = $("#startButton"); if (spinButton.text() === "Már pörgettél") { return "wait"; } else if (spinButton.text() === "Megpörgetem") { console.log("spin is available"); spinButton.on("click", function () { console.log("inside click action"); var popupLogin = $("#popup_login"); console.log(popupLogin); if (popupLogin === null) { return "login" } else { return "success"; } } ); spinButton.trigger("click"); } }Cuando cargo la página, los registros de la consola muestran que logró ingresar
Pero no hubo clics reales en el sitio web. Cuando pruebo el método de clic en la consola, las dos soluciones a continuación funcionan:
También veo los mismos registros de la consola, al ejecutar el método de clic desde la consola, pero de esta manera realmente funciona.
¿Alguien tiene una idea de cuál es el problema? :/
Tengo este problema. En mi caso, me di cuenta de que había sincronizaciones de carga de HTML DOM y script. Entonces, cuando llama al evento de clic, todavía estaba cargado. Así que agregué el script que invoca el evento de clic en window.load y funcionó.
Mi script se ve a continuación:
window.onload = function () { const btn = document.getElementById('J_LinkBuy') if (btn !== null) { btn.dispatchEvent(new MouseEvent('click')) } }Solución 1: puede usar el atributo onclick en cualquier etiqueta HTML y usarlo para llamar a las funciones de JavaScript.
<a onclick="sayHi('Hi')"> Click me </a> <script>function sayHi(message){alert(message)}</script>Solución 2: use la función de evento de clic de jquery.
Recuerde, el clic de jquery debe llamarse solo después de generar el elemento html de destino. la llamada de clic no funcionará o de lo contrario
$(css_selector).click();