Como lidar com as diferenças do navegador com checkbox indeterminado

Primer: Uma caixa de seleção de HTML pode ser definida comoindeterminate, que o exibe como nem verificado nem desmarcado. Mesmo neste estado indeterminado, ainda existe um valor booleano subjacentechecked Estado.

Quando uma caixa de seleção indeterminada é clicada, ela perdeindeterminate Estado. Dependendo do navegador (Firefox), ele também pode alternarchecked propriedade.

Este jsfiddle ilustra a situação. No Firefox, clicar em uma das caixas de seleção uma vez faz com que alternem a inicial subjacentechecked Estado. No IE, ochecked a propriedade é deixada sozinha para o primeiro clique.

Eu gostaria que todos os navegadores se comportassem da mesma forma, mesmo que isso significasse javascript adicional. Infelizmente, oindeterminate a propriedade está definida como falsaantes aonclick manipulador (ouonchange e jquerychange) é chamado, então eu não posso detectar se é chamado por um clique em umindeterminate caixa de seleção ou não.

omouseup ekeyup (para alternar barra de espaços) os eventos mostramindeterminate estado, mas eu prefiro não ser tão específico: parece frágil.

Eu poderia manter uma propriedade separada na caixa de seleção (data-indeterminate ou similar), mas eu queria saber se há uma solução simples que está faltando e / ou se outras pessoas estão tendo problemas semelhantes.