Silverlight 4, события колесика мыши и режим без окон

У меня есть приложение Silverlight 4, которое значительно выигрывает от поддержки встроенного колесика мыши для ряда элементов управления. Страница, на которой размещено приложение, имеет раскрывающееся меню на основе HTML, которое обычно перекрывает элемент управления Silverlight.

В IE мне нужно включить безоконный режим, чтобы наложение меню работало корректно (Firefox 3.6 без него работает нормально). Однако включение режима без окон предотвращает поддержку Firefox событий колеса мыши без дополнительного кодирования вокруг моста HTML DOM.

Можно ли как-то сказать, какие браузеры будут требовать без окон, а какие будут работать без него? В идеале я хотел бы использовать информацию HttpBrowserCapabilities, чтобы решить, следует ли устанавливать для свойства значение true, а не жестко задавать список "поддерживаемых" браузеров.

2 ответа

Решение

Silverlight 4 имеет поддержку событий колесика мыши, но есть ряд правил, о которых следует знать:

  1. IE никогда не проблема
  2. События Mousewheel никогда не работают на OS X вне браузера, и только через HTML DOM в браузере.
  3. Windowsless во всех других браузерах не используется, потому что они используют NPAPI для обработки событий.
  4. Вы можете получить колесо мыши с функциями взаимодействия браузера, чтобы добраться до колеса мыши из DOM, как вы заметили.
  5. HTML DOM никогда не будет работать, когда на весь экран

Для полной разбивки см. http://msdn.microsoft.com/en-us/library/dd759034(v=vs.95).aspx.

Может быть, вы могли бы использовать свой собственный одноэлементный класс MouseWehhenManager, который внутренне рассматривает как события DOM, так и MouseWheelAPI и предоставляет их общим способом, чтобы ваш код мог использовать этот единственный интерфейс, который работает в любом случае?

Другие вопросы по тегам