Platform Limitations on Nokia S60


This topic describes the Silverlight 2 features supported on Silverlight for Symbian, the limitations of Silverlight for Symbian, and the differences between Silverlight 2 and Silverlight for Symbian. The Silverlight goal is to be fully compatible across all supported desktop browsers and devices. However, there are a number of differences because of hardware limitations, browser differences, and device-specific needs. This topic contains the following sections.

For detailed information about unsupported types and members, see Class Library Support on Nokia S60. For known issues, see Known Issues on Nokia S60.

Silverlight for Symbian supports a subset of Silverlight 2 features. To understand the documents in this section, you should be familiar with Silverlight 2.

The following Silverlight 2 features and technologies are not supported in this release:

  • Cryptography

  • Deep Zoom

  • Dynamic language runtime (DLR)

  • Digital Rights Management (DRM)

  • Expression trees

  • HTML DOM bridge

  • JavaScript programmability

  • LINQ to SQL

  • Localization of Silverlight resources

  • Reflection

  • Sockets

  • Visual Basic

  • Windows Communication Foundation (WCF)

The following Silverlight 2 technologies are supported. However, some features may not be supported, or behavior may be different because of platform differences.

  • Silverlight 2 class library. For more information, see Class Library Support on Nokia S60.

  • Media. For more information, see the Media section of this document.

  • Controls. For more information, see the Controls section of this document.

  • Input. For more information, see the Input section of this document.

  • Isolated storage. For more information, see the Isolated Storage section of this document.

  • Fonts. For more information, see the Fonts section of this document.

  • Graphics. All features are supported except for VideoBrush.

  • Networking. For more information, see the Networking section of this document.

This section includes information about browser limitations on the Nokia S60 browser.

Multiple Plug-Ins

Multiple plug-ins on one page are not supported.

If the displayed browser page contains a plug-in and a new browser page is opened that also contains a plug-in, undefined behavior can occur.

Dynamically Changing Browser Plug-In Source

If you change the plug-in source to a different XAP file after a plug-in has completed loading a Silverlight-based application, the result is undefined behavior and might cause the browser to stop responding.

Silverlight Plug-In Object

The Silverlight plug-in object is not supported. Consequently, no features documented in the Silverlight Plug-in Object reference are supported. However, access to the plug-in through JavaScript is not prohibited and may or may not work.

Custom and Response Headers

Custom headers are not supported by the Nokia S60 browser. Custom headers sent by an application in the HTTP POST request do not reach the server.

The Nokia S60 browser does not support response headers. The following code prints the content type as text/html instead of text/html; charset=utf-8.

HttpWebResponse response = state as HttpWebResponse;
string contentType = response.ContentType;

Silverlight Plug-In Access from JavaScript

The Silverlight plug-in is not immediately accessible from JavaScript in the OnLoad method that establishes the handler for the Loaded event. To resolve this issue, you can add a time delay before you access the plug-in.

In the following XAML code, it is assumed that the RunFunc method handles the Loaded event.

<Grid x:Name="LayoutRoot" Background="White" Loaded="RunFunc"></Grid>

To resolve this issue, change RunFunc to a function that adds a delay, as shown in the following code.

<Grid x:Name="LayoutRoot" Background="White" Loaded="TimeoutFunc"></Grid>

TimeoutFunc sets a delay of 200 milliseconds before the plug-in is accessed.

function TimeoutFunc(sender, eventArgs)
    setTimeout(function() { RunFunc(sender, eventArgs); }, 200);

Updating HTML DOM Values Through Managed Code

If you update HTML DOM element values and attributes from code that is managed by the common language runtime, the new values do not take effect on the web page. For example, if the innerHTML attribute is set, the new value does not appear in the browser. The failure is not evident in managed code.

The following code sets a value that is not displayed in the browser.

HtmlElement _label = HtmlPage.Document.GetElementById("txtLabel");
_label.SetAttribute("innerHTML", "Hello World");

The following code correctly reads the value previously set in managed code. However, it still fails to read the content set in the HTML tag.

HtmlElement _label = HtmlPage.Document.GetElementById("txtLabel");
string innerText = _label.GetAttribute("innerHTML");

No Timeout Error If Network Goes Down

A timeout error is not generated if there is a network error or if the HTTP server goes offline after a download has started. This is because the browser does not invoke the NPP_URLNotify API as expected.

For information about media support on Nokia S60, see Media on Nokia S60.

Silverlight for Symbian supports the main Silverlight 2 controls, but it does not support the controls that are present in the Silverlight SDK assemblies or the Silverlight Toolkit.

Silverlight for Symbian does not support the Silverlight 2 ComboBox control or the MultiScaleImage control.

The unsupported controls in the Silverlight SDK and the Silverlight Toolkit include the following:

  • AutoCompleteBox

  • Calendar

  • ComboBox

  • DataGrid

  • DataPager

  • DatePicker

  • GridSplitter

  • Label

  • TabControl

  • TreeView

The following Silverlight 2 controls are supported in this release, although the user may experience usability issues in some cases because of the small screen size.

  • Border

  • Button

  • ContentPresenter

  • Grid

  • Image

    • Clip

    • RenderTransform

  • Slider

    • ValueChanged

  • StackPanel

  • Thumb

The onscreen keyboard appears when the user clicks a TextBox control. The onscreen keyboard supports mini QWERTY and full QWERTY. The T9 keyboard is not supported.

The InkPresenter control supports handwriting.

The isolated storage maximum per application is 1 Mb (1048576 bytes). This value is fixed, and an application cannot acquire additional storage space. As a result, the IncreaseQuotaTo method is not supported.

When cleanup is required, isolated storage files need to be manually deleted by the user. The device does not provide a UI for cleanup. Isolated storage files are stored in drive:\data\Application Data\Microsoft\Silverlight\IS, where drive is either E: or C:.

The FileShare.Read enumeration value is not supported. Use of this enumeration value causes an error. Use the FileShare.Write enumeration value instead. For example, in the following code, the first example fails, but the second example succeeds.

IsolatedStorageFile store = 
String s_strTFName = "Co5726ctor_fm_fa_fs_i.cs";
String s_strTFAbbrev = s_strTFName.Substring(0, 6);
String fileName = s_strTFAbbrev + "TestFile.txt";
Stream fs2, fs3;

// Example 1 – This code fails.
// Open a stream in FileShare.Read mode. You
// need READ Lock for this.
fs2 = new IsolatedStorageFileStream(fileName, FileMode.Create, 
    FileAccess.ReadWrite, FileShare.Read, store);

// Example 2 – This code succeeds.
// Open a stream in FileShare.ReadWrite mode. You
// need WRITE lock for this.
fs3 = new IsolatedStorageFileStream(fileName, FileMode.Open, 
    FileAccess.Read, FileShare.ReadWrite, store);

Font support is controlled by the fonts that are already present on the device, and this support is limited to TrueType fonts. No fonts are installed with Silverlight.

If the font that you want is not present on the target platform, we recommend that you deploy it with the application and use the TrueType format for the application font.

If you want an embedded font to be supported by the runtime in managed code scenarios, the font must be added to the DLL or XAP as an embedded resource.

Support for networking features includes the HttpWebRequest and WebClient classes. For information about features that are not supported, see Class Library Support on Nokia S60.


If you use the HttpWebRequest or WebClient class to download a large amount of content, a failure may occur because of resource exhaustion. To avoid this, we recommend that you use the Dispose method on the download Result object immediately after the download completes.

ThreadPool is not supported.