Limitations of Windowless mode for Silverlight

There seems to be a fair amount of misunderstanding about windowless mode, and the current documentation doesn't provide enough detail to help out. The upcoming doc refresh will fix this, but I thought it might be helpful to provide some information here.

 

When you use windowless mode with the Silverlight plug-in, you are effectively telling the browser to render your Silverlight content directly, instead of giving the plug-in its own window for rendering. The main reason to use windowless mode is when you want your Silverlight content to blend with your HTML content, which the browser can do only when it is in charge of all the rendering. With windowless mode, you can layer Silverlight content on top of HTML content and HTML content on top of Silverlight content.

 

For example, you might want to display a map using HTML, but add a layer that uses Silverlight vector graphics in order to highlight certain features of the map. Of course, to create a Silverlight layer on top of HTML, you must use a transparent or translucent background both for the Silverlight plug-in, and for the content hosted within the plug-in (typically a UserControl).

 

The overlay scenario works pretty well when you keep things simple. Unfortunately, when the browser has the responsibility of rendering the Silverlight content directly, there are numerous things that it cannot do, or cannot do well. Furthermore, some of the limitations depend on which browser is doing the rendering.

 

The current documentation does contain a warning that windowless mode has a significant performance impact, which makes it unsuitable for complex animations and video playback. However, this limitation has not been sufficient to keep people away from windowless mode.

 

I am not recommending that you avoid windowless mode entirely, but I do strongly recommend that you do not use it casually. For example, if you use it for special effect purposes (such as creating a non-rectangular Silverlight-based application on top of a complex HTML background), you should carefully consider whether the special effect is worthwhile given the limitations listed below.

 

In some cases, you can achieve the desired special effect without using windowless mode, although it might take a little more work. For example, to achieve the effect of a non-rectangular Silverlight-based application, you can provide a UserControl background that blends seamlessly with your HTML background. (Of course, this is easier to achieve with solid-color backgrounds as opposed to backgrounds with complex images.)

 

When you do use windowless mode, I also recommend that you test your code with a variety of platforms and browsers to make sure that your target audience is seeing what you expect.

 

Now for the complete list of limitations, which I have added to the documentation for the next update. Please note that this is not a list of bugs that might be fixed in future versions of Silverlight. It is a list of limitations that would take considerable effort to work around. Therefore, you should not expect these limitations to disappear over time.

 

Limitations of windowless mode for Silverlight:

  • Performance issues. Windowless mode is computationally expensive, especially in combination with a transparent plug-in background. For more information, see Performance Tips.
  • No support for passing mouse input to HTML content that the plug-in overlaps, even if the plug-in has a transparent background. To process mouse input through HTML, the HTML must overlap the Silverlight plug-in.
  • No mouse capture support outside the boundary of the plug-in.
  • No accessibility or IME support.
  • No support for windowless mode in full-screen mode.
  • No support for suppressing popup blockers when using hyperlink navigation to new windows. Note also that popup blocker suppression is not supported on Safari regardless of the windowing mode.
  • Issues due to browser and platform limitations:
    • Visual tearing in animation and video playback on Windows XP, on Windows Vista with DWM disabled, and in Internet Explorer, regardless of platform.
    • Unreliable rendering when overlapping HTML content in Safari.
    • Focus issues in Mozilla-based browsers. When the focus moves between the plug-in and other plug-ins or HTML controls, multiple controls will sometimes appear to have focus.