es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Tampermonkey waitForKeyElements refresca la página después de hacer clic y crea un bucle infinito?

Estoy tratando de hacer clic automáticamente en el botón “¿Sigue viendo? El video se pausará pronto” en YouTube para que mis videos no se detengan después de cierta cantidad de tiempo. He creado un script de Tampermonkey/Greasemonkey para hacer clic en el botón cuando aparezca usando waitForKeyElements. Parece funcionar, ya que hace clic en el mensaje emergente. Pero a veces entra en un bucle infinito donde hace clic en el botón del mensaje emergente y luego actualiza la página. El botón volverá a aparecer después de la actualización y luego se volverá a hacer clic en él y se repetirá ad infinitum.

He proporcionado una captura de pantalla de lo que estoy describiendo. Observa el mensaje emergente de YouTube en la esquina inferior izquierda:

enter image description here

Aquí está el código para el script de Tampermonkey:

// ==UserScript==
// @name     YouTube Yes 4
// @include  https://www.youtube.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

waitForKeyElements(
    ".yt-button-renderer", hacerClic
);

function hacerClic(TargetLink) {
    TargetLink = $("a:contains('Sí')")

    if (TargetLink.length)
        window.location.href = TargetLink[0].href
}

Edit: Aquí tienes un script actualizado que utiliza .click():

waitForKeyElements(
    "tp-yt-paper-button#button.style-scope.yt-button-renderer.style-blue-text.size-default", hacerClic
);

function hacerClic() {
    $("tp-yt-paper-button#button.style-scope.yt-button-renderer.style-blue-text.size-default:contains('Sí')").click();
}

Cualquier ayuda sería muy apreciada. ¡Felices fiestas!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema del script de Tampermonkey que hace clic en el botón emergente y luego actualiza la página, el script puede actualizarse para usar la función .click() en lugar de cambiar window.location.href. Aquí está el script actualizado:

    waitForKeyElements (
        "tp-yt-paper-button#button.style-scope.yt-button-renderer.style-blue-text.size-default", hacerClic
    );
    
    function hacerClic () {
        $("tp-yt-paper-button#button.style-scope.yt-button-renderer.style-blue-text.size-default:contains('Sí')").click();
    }
    

    Al utilizar .click(), el script solo hará clic en el botón sin cambiar de página, evitando el ciclo infinito.

Comments are closed.