Estoy aprendiendo JavaScript usando algunos ejemplos que encontré en línea. Y al trabajar en una HTA, me he vuelto loco tratando de averiguar por qué el evento "en entrada" no se activará. He incluido el código relevante a continuación para demostrar mi problema. Tenga en cuenta que estoy usando la compatibilidad con Edge en la metaetiqueta. Agradecería cualquier información sobre lo que estoy haciendo mal. Gracias.
<!DOCTYPE html> <html> <head> <title>Test</title> <meta http-equiv="x-ua-compatible" content="ie=edge"/> <hta:application id="" applicationname="" border="thin" borderstyle="normal" caption="yes" icon="" maximizebutton="no" minimizebutton="yes" scroll="yes" levelintaskbar="yes" singleinstance="yes" sysmenu="yes" version="1.00" windowstate="maximize" /> </head> <style> body { background-color: lightgray; color: darkred; font-family: "Arial"; } h3 { text-align: center; } </style> <script type="text/javascript"> function level() { f = document.getElementById("x").value; document.getElementById("x_out").innerHTML = f + " factor"; switch(document.getElementById("y").value * 1){ case 0: type = "alpha"; break; case 1: type = "beta"; break; case 2: type = "gamma"; break; case 3: type = "delta"; break; } document.getElementById("y_out").innerHTML = type; v = document.getElementById("z").value * 1; document.getElementById("z_out").innerHTML = v; } </script> <body onload="level()"> <h3>Test</h3> <p> X: <br> <input type="range" id="x" min="40" max="6000" onclick="level()">  <span id="x_out"></span> </p> Y: <br> <input type="range" id="y" min="0" max="3" onchange="level()">  <span id="y_out"></span> <p> Z: <br> <input type="range" id="z" min="0" max="100" oninput="level()">  <span id="z_out"></span> </p> </body> </html>Con MSHTML (el motor de representación utilizado por MSHTA e IE), oninput se activará con el tipo de entrada text , pero se ignorará para el tipo de entrada range .
No es una buena idea intentar usar una HTA para aprender JavaScript moderno. Los HTA son compatibles con JScript , por lo que constantemente se encontrará con situaciones como esta. Si solo desea trabajar con un archivo local, guarde sus ejemplos con una extensión .htm y ejecútelos en cualquier navegador moderno, como Chrome, Firefox, Edge, etc.
Si realmente desea escribir HTA (es decir, para escribir código que tenga acceso completo a la máquina como un Exe ), deberá recordar que cualquier ejemplo de JavaScript que encuentre debe funcionar con IE 11.
En el caso de su HTA, tenga en cuenta que IE=edge significa "ejecutar en el modo IE más reciente proporcionado por MSHTML". No tiene nada que ver con el navegador Edge. Dado que el último MSHTML ha sido la versión 11 durante mucho tiempo (y nunca irá más allá), también puede especificar IE=11 para tener más claro en qué modo está su HTA. Además, tenga en cuenta que más allá de IE=9 , la sección hta:application se ignora (es por eso que su HTA no se abre al máximo).
Pero, como probablemente descubrió, el tipo de entrada de range requiere IE=10 o superior. Por lo tanto, para usar los atributos range Y hta:application , deberá dividir su HTA en dos archivos, como se muestra aquí .