O JavaScript é único segmentado? Se não, como obtenho acesso sincronizado a dados compartilhados?
Eu tenho uma página web comDIV
s com ummouseover
manipulador que se destina a mostrar uma bolha de informações pop-up. Não quero que mais de um balão de informações seja visível por vez. Mas quando o usuário move o mouse rapidamente sobre dois itens, às vezes recebo duas bolhas. Isso não deve acontecer, porque o código para mostrar um pop-up cancela o pop-up anterior.
Se este fosse um sistema multi-threaded, então o problema seria óbvio: há dois tópicos tentando mostrar um pop-up, e ambos cancelam os pop-ups existentes e então exibem seus próprios pop-ups. Mas eu assumi que o JavaScript é sempre executado single-threaded, o que impediria isso. Estou errado? Os manipuladores de eventos estão sendo executados de forma assíncrona e, nesse caso, preciso de acesso sincronizado a dados compartilhados ou, em vez disso, estou procurando bugs no código da biblioteca para cancelar pop-ups?
Editado para adicionar:
A biblioteca em questão éLinha do tempo SIMILE e sua biblioteca Ajax;O manipulador de eventos chamaSimileAjax.DOM.cancelEvent(domEvt)
, que eu assumo baseado no nome cancela o borbulhar de eventos;Só para tornar as coisas mais complicadas, o que estou realmente fazendo é começar um tempo que, se não for cancelado por ummoustout
mostra o pop-up, com a intenção de evitar pop-ups piscando irritantemente, mas irritantemente tendo o efeito reverso.Vou dar outra cutucada e ver se consigo descobrir onde estou indo errado. :-)