Estoy escribiendo un detector de eventos JS para ocultar el botón si el valor ingresado en un campo de texto es verdadero:
const item = document.getElementById("my-field"); item.addEventListener("input", function (evt) { if (item.value == "true") { document .getElementById("my-button") .setAttribute("style", "display: none;"); } });Esto funciona bien si agrego manualmente este valor, pero tengo otra función JS (que se ejecuta como parte de la extensión de Chrome) que lo hace. El eventListener no funciona entonces. ¿Alguna idea de cómo puedo hacer que esto funcione cuando un código JS está ingresando el valor?
Intente reemplazar input con change , así:
item.addEventListener('change', function (evt) { if (item.value == 'true') { document.getElementById("my-button").setAttribute("style", "display: none;"); } });Esto puede resolver el problema.
¿Sospecho que tienes acceso para cambiar la extensión con la que estás tratando? Si es así, probablemente desee utilizar este método (simplemente invierta el orden aquí. Pasará de extensión a index.html): https://stackoverflow.com/a/11431812/3011559
De lo contrario, es posible que deba recurrir a sondear la entrada rápidamente y verificar los cambios. Puede haber algunas formas engañosas de detectar cambios (es posible que desee consultar MutationObserver ) con eventos cuando los cambios se modifican mediante programación. Sin embargo, considerando que los cambios son por extensión, los contextos son aislados. Lo hace complicado por diseño.