Pergunta

Eu tenho um aplicativo Silverlight 4 que se beneficia muito com o suporte à roda do mouse nativo para vários controles. A página que hospeda o aplicativo possui um menu suspenso HTML acionado por HTML que normalmente sobreporia o controle do Silverlight.

No IE, tenho que ativar o modo sem janela para permitir que o menu de sobreposição funcione corretamente (o Firefox 3.6 funciona normalmente sem ele). No entanto, ativar o modo sem janela impede o Firefox de apoiar eventos da roda do mouse sem codificação adicional ao redor da ponte html dom.

Existe alguma maneira de saber quais navegadores exigirão sem janelas e quais funcionarão sem ele? Idealmente, eu gostaria de usar as informações HTTPBrowSerCabitities para decidir se definir ou não a propriedade como True, em vez de codificar uma lista de navegadores 'suportados'.

Foi útil?

Solução

O Silverlight 4 tem suporte para eventos de roda do mouse, mas há várias regras a serem cientes de:

  1. Ou seja, nunca é um problema
  2. Os eventos do Mouse Wheel nunca funcionam no OS X fora do navegador, e apenas através do html DOM no navegador.
  3. Sem janelas em todos os outros navegadores é um não-go, porque eles confiam Npapi para lidar com eventos.
  4. Você pode obter a roda do mouse com os recursos de interoperabilidade do navegador para chegar à roda do mouse do DOM como você observou.
  5. HTML DOM nunca funcionará quando a tela cheia

Para um colapso completo, veja http://msdn.microsoft.com/en-us/library/dd759034(v=vs.95).aspx.

Outras dicas

Talvez você possa usar sua própria classe Singleton Mousewehhenmanager que considera internamente os eventos DOM e Mousewheelapi e os fornece de uma maneira comum, para que seu código possa usar essa interface única que funcione de qualquer maneira?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top