Se eu entendo a pergunta corretamente, o problema é que no Firefox, o onchange
O manipulador não é executado quando você pressiona o botão do mouse quando o cursor estiver no botão do slider e mova o mouse. Ele é executado somente depois de liberar o botão do mouse após esse movimento.
Esse parece ser o comportamento correto (embora alguns outros navegadores não cumpram), já que o html5 cr diz sobre o change
evento: “Se o elemento não tiver um comportamento de ativação definido, mas usa uma interface do usuário que envolve uma ação de confirmação explícita, sempre que o usuário compromete uma alteração no valor ou lista de arquivos selecionados, o agente do usuário deve fazer fila uma tarefa para disparar um evento simples que bolhas denominadas alterações no elemento de entrada. ”
Essa é uma formulação um pouco complicada, mas é seguida por um exemplo esclarecedor: “Um terceiro exemplo de interface do usuário com uma ação de confirmação seria um controle de intervalo que usa um controle deslizante. Enquanto o usuário está arrastando o botão do controle, os eventos de entrada disparavam sempre que a posição mudasse, enquanto o evento de mudança apenas disparava quando o usuário soltasse o botão, comprometendo -se a um valor específico. ”
A conclusão é que, neste caso, você deve usar o oninput
atributo em vez de onchange
. Na prática, onmousemove
funciona também, mas oninput
é melhor, pois pode ser esperado que funcione com métodos de entrada que não usam um mouse (seja qual for o controle, por exemplo, controle por voz).